Generalized Notation Notation (GNN) Pipeline Output Summary

Table of Contents

Pipeline Execution Summary

{
  "start_time": "2025-06-06T12:52:14.864664",
  "arguments": {
    "target_dir": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples",
    "output_dir": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/output",
    "recursive": true,
    "skip_steps": "",
    "only_steps": "",
    "verbose": true,
    "strict": false,
    "estimate_resources": true,
    "ontology_terms_file": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology/act_inf_ontology_terms.json",
    "llm_tasks": "all",
    "llm_timeout": 60,
    "pipeline_summary_file": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/output/pipeline_execution_summary.json",
    "site_html_filename": "gnn_pipeline_summary_site.html",
    "discopy_gnn_input_dir": null,
    "discopy_jax_gnn_input_dir": null,
    "discopy_jax_seed": 0,
    "recreate_venv": false,
    "dev": false
  },
  "steps": [
    {
      "step_number": 1,
      "script_name": "1_gnn.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:14.865499",
      "end_time": "2025-06-06T12:52:15.000251",
      "duration_seconds": 0.134752,
      "details": "",
      "stdout": "2025-06-06 12:52:14,964 - __main__ - DEBUG - Script logger '__main__' level set to DEBUG.\n2025-06-06 12:52:14,964 - __main__ - DEBUG - Project root determined for path relativization: /home/trim/Documents/GitHub/GeneralizedNotationNotation\n2025-06-06 12:52:14,965 - __main__ - INFO - GNN Step 1: Target directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:52:14,965 - __main__ - INFO - GNN Step 1: Output directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:52:14,965 - __main__ - INFO - GNN Step 1: Recursive: True\n2025-06-06 12:52:14,965 - __main__ - INFO - GNN Step 1: Verbose: True\n2025-06-06 12:52:14,965 - __main__ - INFO - Starting GNN file processing for directory: 'src/gnn/examples'\n2025-06-06 12:52:14,965 - __main__ - INFO - Recursive mode enabled: searching in subdirectories.\n2025-06-06 12:52:14,965 - __main__ - DEBUG - Ensured output directory exists: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_processing_step\n2025-06-06 12:52:14,965 - __main__ - DEBUG - Searching for GNN files matching pattern '**/*.md' in '/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'\n2025-06-06 12:52:14,966 - __main__ - INFO - Found 2 .md file(s) to process in 'src/gnn/examples'.\n2025-06-06 12:52:14,966 - __main__ - DEBUG - Processing file: src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:14,966 - __main__ - DEBUG - Successfully read content from src/gnn/examples/pymdp_pomdp_agent.md.\n2025-06-06 12:52:14,966 - __main__ - DEBUG -   Found '## ModelName' header in src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:14,966 - __main__ - DEBUG -     Extracted ModelName: 'Multifactor PyMDP Agent v1' from src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:14,966 - __main__ - DEBUG -   StateSpaceBlock section not found in src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:14,966 - __main__ - DEBUG -     Content snippet for src/gnn/examples/pymdp_pomdp_agent.md (up to 500 chars) where StateSpaceBlock was not found:\n# GNN Example: Multifactor PyMDP Agent\n# Format: Markdown representation of a Multifactor PyMDP model in Active Inference format\n# Version: 1.0\n# This file is machine-readable and attempts to represent a PyMDP agent with multiple observation modalities and hidden state factors.\n\n## GNNSection\nMultifactorPyMDPAgent\n\n## GNNVersionAndFlags\nGNN v1\n\n## ModelName\nMultifactor PyMDP Agent v1\n\n## ModelAnnotation\nThis model represents a PyMDP agent with multiple observation modalities and hidden state fac\n2025-06-06 12:52:14,966 - __main__ - DEBUG -   Connections section not found in src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:14,967 - __main__ - DEBUG -     Content snippet for src/gnn/examples/pymdp_pomdp_agent.md (up to 500 chars) where Connections was not found:\n# GNN Example: Multifactor PyMDP Agent\n# Format: Markdown representation of a Multifactor PyMDP model in Active Inference format\n# Version: 1.0\n# This file is machine-readable and attempts to represent a PyMDP agent with multiple observation modalities and hidden state factors.\n\n## GNNSection\nMultifactorPyMDPAgent\n\n## GNNVersionAndFlags\nGNN v1\n\n## ModelName\nMultifactor PyMDP Agent v1\n\n## ModelAnnotation\nThis model represents a PyMDP agent with multiple observation modalities and hidden state fac\n2025-06-06 12:52:14,967 - __main__ - DEBUG -   Found ModelParameters section in src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:14,969 - __main__ - DEBUG -     Parsed ModelParameter: num_hidden_states_factors = [2, 3]\n2025-06-06 12:52:14,969 - __main__ - DEBUG -     Parsed ModelParameter: num_obs_modalities = [3, 3, 3]\n2025-06-06 12:52:14,969 - __main__ - DEBUG -     Parsed ModelParameter: num_control_factors = [1, 3]\n2025-06-06 12:52:14,970 - __main__ - DEBUG - Processing file: src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:14,970 - __main__ - DEBUG - Successfully read content from src/gnn/examples/rxinfer_multiagent_gnn.md.\n2025-06-06 12:52:14,970 - __main__ - DEBUG -   Found '## ModelName' header in src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:14,970 - __main__ - DEBUG -     Extracted ModelName: 'Multi-agent Trajectory Planning' from src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:14,970 - __main__ - DEBUG -   StateSpaceBlock section not found in src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:14,970 - __main__ - DEBUG -     Content snippet for src/gnn/examples/rxinfer_multiagent_gnn.md (up to 500 chars) where StateSpaceBlock was not found:\n# GNN Example: RxInfer Multi-agent Trajectory Planning\n# Format: Markdown representation of a Multi-agent Trajectory Planning model for RxInfer.jl\n# Version: 1.0\n# This file is machine-readable and represents the configuration for the RxInfer.jl multi-agent trajectory planning example.\n\n## GNNSection\nRxInferMultiAgentTrajectoryPlanning\n\n## GNNVersionAndFlags\nGNN v1\n\n## ModelName\nMulti-agent Trajectory Planning\n\n## ModelAnnotation\nThis model represents a multi-agent trajectory planning scenario i\n2025-06-06 12:52:14,970 - __main__ - DEBUG -   Connections section not found in src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:14,970 - __main__ - DEBUG -     Content snippet for src/gnn/examples/rxinfer_multiagent_gnn.md (up to 500 chars) where Connections was not found:\n# GNN Example: RxInfer Multi-agent Trajectory Planning\n# Format: Markdown representation of a Multi-agent Trajectory Planning model for RxInfer.jl\n# Version: 1.0\n# This file is machine-readable and represents the configuration for the RxInfer.jl multi-agent trajectory planning example.\n\n## GNNSection\nRxInferMultiAgentTrajectoryPlanning\n\n## GNNVersionAndFlags\nGNN v1\n\n## ModelName\nMulti-agent Trajectory Planning\n\n## ModelAnnotation\nThis model represents a multi-agent trajectory planning scenario i\n2025-06-06 12:52:14,970 - __main__ - DEBUG -   Found ModelParameters section in src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:14,971 - __main__ - INFO - GNN discovery report saved to: output/gnn_processing_step/1_gnn_discovery_report.md\n2025-06-06 12:52:14,971 - __main__ - INFO - Step 1_gnn completed successfully.",
      "stderr": ""
    },
    {
      "step_number": 2,
      "script_name": "2_setup.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:15.000362",
      "end_time": "2025-06-06T12:52:17.810869",
      "duration_seconds": 2.810507,
      "details": "",
      "stdout": "2025-06-06 12:52:15,096 - __main__ - DEBUG - Script logger '__main__' level set to DEBUG.\n2025-06-06 12:52:15,096 - __main__ - INFO - \u25b6\ufe0f Starting Step 2: Setup\n2025-06-06 12:52:15,096 - __main__ - DEBUG -   Parsed arguments for setup: Namespace(target_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'), output_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/output'), verbose=True, recreate_venv=False, dev=False)\n2025-06-06 12:52:15,096 - __main__ - INFO - \ud83d\udcca Gathering environment information...\n2025-06-06 12:52:15,097 - __main__ - INFO - --- Environment Information ---\n2025-06-06 12:52:15,097 - __main__ - INFO - Python version: 3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:50:58) [GCC 12.3.0]\n2025-06-06 12:52:15,097 - __main__ - INFO - Python executable: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/bin/python\n2025-06-06 12:52:15,107 - __main__ - INFO - Operating system: Linux-6.12.10-76061203-generic-x86_64-with-glibc2.35\n2025-06-06 12:52:15,107 - __main__ - DEBUG - Checking virtual environment status...\n2025-06-06 12:52:15,108 - __main__ - INFO - Virtual environment: Active at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv\n2025-06-06 12:52:15,108 - __main__ - INFO -   - Python: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/bin/python\n2025-06-06 12:52:15,108 - __main__ - INFO -   - Pip: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/bin/pip\n2025-06-06 12:52:15,108 - __main__ - DEBUG - Checking system dependencies...\n2025-06-06 12:52:15,405 - __main__ - INFO - System dependencies:\n2025-06-06 12:52:15,405 - __main__ - INFO -   - pip: \u2713 Available\n2025-06-06 12:52:15,405 - __main__ - INFO -   - venv: \u2713 Available\n2025-06-06 12:52:15,405 - __main__ - INFO -   - graphviz: \u2717 Not found\n2025-06-06 12:52:15,405 - __main__ - INFO - -----------------------------\n2025-06-06 12:52:15,405 - __main__ - DEBUG -   Phase 1: Verifying project directories...\n2025-06-06 12:52:15,405 - __main__ - INFO - \ud83d\udd0d Verifying directories...\n2025-06-06 12:52:15,405 - __main__ - DEBUG - Searching for GNN files in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples...\n2025-06-06 12:52:15,406 - __main__ - DEBUG -   Found 0 GNN .md files (recursively in target: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples)\n2025-06-06 12:52:15,406 - __main__ - WARNING - \u26a0\ufe0f Warning: No GNN files found in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples. This might be expected if you're planning to create them later.\n2025-06-06 12:52:15,406 - __main__ - INFO - \ud83d\udcc1 Creating output directory structure...\n2025-06-06 12:52:15,406 - __main__ - INFO - \u2705 Output directory structure verified/created: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:52:15,406 - __main__ - DEBUG -   \ud83d\udcc4 Directory structure info saved to: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/directory_structure.json\n2025-06-06 12:52:15,406 - __main__ - INFO -   \u2705 Project directories verified successfully.\n2025-06-06 12:52:15,406 - __main__ - INFO -   Phase 2: Setting up Python virtual environment and dependencies...\n2025-06-06 12:52:15,406 - __main__ - INFO -   \u23f3 This may take a few minutes, especially if installing dependencies...\n2025-06-06 12:52:15,406 - __main__ - DEBUG -   \ud83d\udc0d Calling perform_full_setup from src/setup/setup.py\n2025-06-06 12:52:15,406 - __main__ - INFO -   \ud83d\udce6 Setup config: recreate_venv=False, install_dev=False\n2025-06-06 12:52:15,406 - INFO - \ud83d\ude80 Starting environment setup...\n2025-06-06 12:52:15,406 - INFO - \ud83d\udcc1 Project root: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src\n2025-06-06 12:52:15,406 - INFO - \u2699\ufe0f Configuration: verbose=True, recreate_venv=False, dev=False\n2025-06-06 12:52:15,406 - INFO -\n\ud83d\udccb Phase 1/3: Checking system requirements...\n2025-06-06 12:52:15,407 - INFO - \ud83d\udd0d Checking system requirements...\n2025-06-06 12:52:15,407 - INFO - \u2705 Python version check passed: 3.12.2\n2025-06-06 12:52:15,407 - DEBUG - Checking pip availability...\n2025-06-06 12:52:15,407 - DEBUG - Running command: '/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/bin/python -m pip --version' in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src\n2025-06-06 12:52:15,558 - DEBUG - Stdout:\npip 25.1.1 from /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/lib/python3.12/site-packages/pip (python 3.12)\n2025-06-06 12:52:15,558 - INFO - \u2705 pip is available: pip 25.1.1 from /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/lib/python3.12/site-packages/pip (python 3.12)\n2025-06-06 12:52:15,558 - DEBUG - Checking venv module availability...\n2025-06-06 12:52:15,558 - DEBUG - Running command: '/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/bin/python -c import venv' in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src\n2025-06-06 12:52:15,587 - INFO - \u2705 venv module is available\n2025-06-06 12:52:15,587 - INFO - \u2705 Disk space check passed: 61.51GB free\n2025-06-06 12:52:15,587 - INFO - \u2705 System requirements check passed\n2025-06-06 12:52:15,587 - INFO -\n\ud83d\udccb Phase 2/3: Setting up virtual environment...\n2025-06-06 12:52:15,587 - INFO - \u2713 Using existing virtual environment at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv\n2025-06-06 12:52:15,587 - INFO - \u2705 Virtual environment setup completed in 0.0s\n2025-06-06 12:52:15,587 - INFO -\n\ud83d\udccb Phase 3/3: Installing dependencies...\n2025-06-06 12:52:15,587 - INFO - \u23f3 This may take several minutes...\n2025-06-06 12:52:15,587 - INFO - \ud83d\udce6 Installing dependencies from /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt...\n2025-06-06 12:52:15,587 - INFO - \ud83d\udce6 Upgrading pip in virtual environment...\n2025-06-06 12:52:15,956 - DEBUG - Requirement already satisfied: pip in ./.venv/lib/python3.12/site-packages (25.1.1)\n2025-06-06 12:52:16,422 - INFO - \ud83d\udce6 Installing main dependencies (this may take several minutes)...\n2025-06-06 12:52:16,760 - DEBUG - Requirement already satisfied: graphviz>=0.20.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 2)) (0.20.3)\n2025-06-06 12:52:16,761 - DEBUG - Requirement already satisfied: matplotlib>=3.7.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 3)) (3.10.3)\n2025-06-06 12:52:16,761 - DEBUG - Requirement already satisfied: networkx>=3.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 4)) (3.5)\n2025-06-06 12:52:16,761 - DEBUG - Requirement already satisfied: numpy>=1.24.3 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 5)) (2.2.6)\n2025-06-06 12:52:16,762 - DEBUG - Requirement already satisfied: pandas>=2.0.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 6)) (2.2.3)\n2025-06-06 12:52:16,762 - DEBUG - Requirement already satisfied: pytest>=7.3.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 7)) (8.3.5)\n2025-06-06 12:52:16,762 - DEBUG - Requirement already satisfied: scipy>=1.10.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 8)) (1.15.3)\n2025-06-06 12:52:16,763 - DEBUG - Requirement already satisfied: inferactively-pymdp<0.1.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.0.7.1)\n2025-06-06 12:52:16,763 - DEBUG - Requirement already satisfied: openai>=1.0.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (1.79.0)\n2025-06-06 12:52:16,763 - DEBUG - Requirement already satisfied: python-dotenv>=1.0.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 15)) (1.1.0)\n2025-06-06 12:52:16,763 - DEBUG - Requirement already satisfied: Markdown>=3.4.3 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 18)) (3.8)\n2025-06-06 12:52:16,764 - DEBUG - Requirement already satisfied: httpx>=0.27.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 21)) (0.28.1)\n2025-06-06 12:52:16,764 - DEBUG - Requirement already satisfied: altair>=5.0.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (5.5.0)\n2025-06-06 12:52:16,765 - DEBUG - Requirement already satisfied: discopy>=1.0.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 25)) (1.2.0)\n2025-06-06 12:52:16,765 - DEBUG - Requirement already satisfied: jax>=0.4.20 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 28)) (0.6.0)\n2025-06-06 12:52:16,765 - DEBUG - Requirement already satisfied: jaxlib>=0.4.20 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 29)) (0.6.0)\n2025-06-06 12:52:16,765 - DEBUG - Requirement already satisfied: pytest-cov>=4.1.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 33)) (6.1.1)\n2025-06-06 12:52:16,766 - DEBUG - Requirement already satisfied: pytest-mock>=3.10.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 34)) (3.14.1)\n2025-06-06 12:52:16,766 - DEBUG - Requirement already satisfied: flake8>=6.0.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 37)) (7.2.0)\n2025-06-06 12:52:16,766 - DEBUG - Requirement already satisfied: mypy>=1.3.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 38)) (1.16.0)\n2025-06-06 12:52:16,767 - DEBUG - Requirement already satisfied: black>=23.3.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 39)) (25.1.0)\n2025-06-06 12:52:16,767 - DEBUG - Requirement already satisfied: isort>=5.12.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 40)) (6.0.1)\n2025-06-06 12:52:16,768 - DEBUG - Requirement already satisfied: sphinx>=7.0.1 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (8.2.3)\n2025-06-06 12:52:16,769 - DEBUG - Requirement already satisfied: sphinx-rtd-theme>=1.2.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 44)) (3.0.2)\n2025-06-06 12:52:16,769 - DEBUG - Requirement already satisfied: ipython>=8.13.2 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (9.2.0)\n2025-06-06 12:52:16,769 - DEBUG - Requirement already satisfied: ipdb>=0.13.13 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 48)) (0.13.13)\n2025-06-06 12:52:16,770 - DEBUG - Requirement already satisfied: types-requests>=2.30.0.0 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 51)) (2.32.0.20250602)\n2025-06-06 12:52:16,770 - DEBUG - Requirement already satisfied: types-Markdown>=3.4.2.9 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 52)) (3.8.0.20250415)\n2025-06-06 12:52:16,771 - DEBUG - Requirement already satisfied: py-spy>=0.3.14 in ./.venv/lib/python3.12/site-packages (from -r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 55)) (0.4.0)\n2025-06-06 12:52:16,773 - DEBUG - Requirement already satisfied: attrs>=20.3.0 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (25.3.0)\n2025-06-06 12:52:16,773 - DEBUG - Requirement already satisfied: cycler>=0.10.0 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.12.1)\n2025-06-06 12:52:16,774 - DEBUG - Requirement already satisfied: iniconfig>=1.1.1 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (2.1.0)\n2025-06-06 12:52:16,774 - DEBUG - Requirement already satisfied: kiwisolver>=1.3.1 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.4.8)\n2025-06-06 12:52:16,775 - DEBUG - Requirement already satisfied: nose>=1.3.7 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.3.7)\n2025-06-06 12:52:16,775 - DEBUG - Requirement already satisfied: openpyxl>=3.0.7 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (3.1.5)\n2025-06-06 12:52:16,776 - DEBUG - Requirement already satisfied: packaging>=20.8 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (25.0)\n2025-06-06 12:52:16,777 - DEBUG - Requirement already satisfied: Pillow>=8.2.0 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (11.2.1)\n2025-06-06 12:52:16,778 - DEBUG - Requirement already satisfied: pluggy>=0.13.1 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.6.0)\n2025-06-06 12:52:16,778 - DEBUG - Requirement already satisfied: py>=1.10.0 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.11.0)\n2025-06-06 12:52:16,779 - DEBUG - Requirement already satisfied: pyparsing>=2.4.7 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (3.2.3)\n2025-06-06 12:52:16,779 - DEBUG - Requirement already satisfied: python-dateutil>=2.8.1 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (2.9.0.post0)\n2025-06-06 12:52:16,780 - DEBUG - Requirement already satisfied: pytz>=2020.5 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (2025.2)\n2025-06-06 12:52:16,781 - DEBUG - Requirement already satisfied: seaborn>=0.11.1 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.13.2)\n2025-06-06 12:52:16,781 - DEBUG - Requirement already satisfied: six>=1.15.0 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.17.0)\n2025-06-06 12:52:16,782 - DEBUG - Requirement already satisfied: toml>=0.10.2 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.10.2)\n2025-06-06 12:52:16,782 - DEBUG - Requirement already satisfied: typing-extensions>=3.7.4.3 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (4.13.2)\n2025-06-06 12:52:16,782 - DEBUG - Requirement already satisfied: xlsxwriter>=1.4.3 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (3.2.3)\n2025-06-06 12:52:16,783 - DEBUG - Requirement already satisfied: myst-nb>=0.13.1 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.2.0)\n2025-06-06 12:52:16,784 - DEBUG - Requirement already satisfied: autograd>=1.3 in ./.venv/lib/python3.12/site-packages (from inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.8.0)\n2025-06-06 12:52:16,787 - DEBUG - Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib/python3.12/site-packages (from matplotlib>=3.7.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 3)) (1.3.2)\n2025-06-06 12:52:16,788 - DEBUG - Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib/python3.12/site-packages (from matplotlib>=3.7.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 3)) (4.58.2)\n2025-06-06 12:52:16,802 - DEBUG - Requirement already satisfied: tzdata>=2022.7 in ./.venv/lib/python3.12/site-packages (from pandas>=2.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 6)) (2025.2)\n2025-06-06 12:52:16,820 - DEBUG - Requirement already satisfied: anyio<5,>=3.5.0 in ./.venv/lib/python3.12/site-packages (from openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (4.9.0)\n2025-06-06 12:52:16,821 - DEBUG - Requirement already satisfied: distro<2,>=1.7.0 in ./.venv/lib/python3.12/site-packages (from openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (1.9.0)\n2025-06-06 12:52:16,822 - DEBUG - Requirement already satisfied: jiter<1,>=0.4.0 in ./.venv/lib/python3.12/site-packages (from openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (0.10.0)\n2025-06-06 12:52:16,822 - DEBUG - Requirement already satisfied: pydantic<3,>=1.9.0 in ./.venv/lib/python3.12/site-packages (from openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (2.11.4)\n2025-06-06 12:52:16,822 - DEBUG - Requirement already satisfied: sniffio in ./.venv/lib/python3.12/site-packages (from openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (1.3.1)\n2025-06-06 12:52:16,823 - DEBUG - Requirement already satisfied: tqdm>4 in ./.venv/lib/python3.12/site-packages (from openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (4.67.1)\n2025-06-06 12:52:16,826 - DEBUG - Requirement already satisfied: certifi in ./.venv/lib/python3.12/site-packages (from httpx>=0.27.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 21)) (2025.4.26)\n2025-06-06 12:52:16,827 - DEBUG - Requirement already satisfied: httpcore==1.* in ./.venv/lib/python3.12/site-packages (from httpx>=0.27.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 21)) (1.0.9)\n2025-06-06 12:52:16,827 - DEBUG - Requirement already satisfied: idna in ./.venv/lib/python3.12/site-packages (from httpx>=0.27.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 21)) (3.10)\n2025-06-06 12:52:16,834 - DEBUG - Requirement already satisfied: h11>=0.16 in ./.venv/lib/python3.12/site-packages (from httpcore==1.*->httpx>=0.27.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 21)) (0.16.0)\n2025-06-06 12:52:16,837 - DEBUG - Requirement already satisfied: annotated-types>=0.6.0 in ./.venv/lib/python3.12/site-packages (from pydantic<3,>=1.9.0->openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (0.7.0)\n2025-06-06 12:52:16,837 - DEBUG - Requirement already satisfied: pydantic-core==2.33.2 in ./.venv/lib/python3.12/site-packages (from pydantic<3,>=1.9.0->openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (2.33.2)\n2025-06-06 12:52:16,838 - DEBUG - Requirement already satisfied: typing-inspection>=0.4.0 in ./.venv/lib/python3.12/site-packages (from pydantic<3,>=1.9.0->openai>=1.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 14)) (0.4.0)\n2025-06-06 12:52:16,847 - DEBUG - Requirement already satisfied: jinja2 in ./.venv/lib/python3.12/site-packages (from altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (3.1.6)\n2025-06-06 12:52:16,847 - DEBUG - Requirement already satisfied: jsonschema>=3.0 in ./.venv/lib/python3.12/site-packages (from altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (4.23.0)\n2025-06-06 12:52:16,847 - DEBUG - Requirement already satisfied: narwhals>=1.14.2 in ./.venv/lib/python3.12/site-packages (from altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (1.40.0)\n2025-06-06 12:52:16,856 - DEBUG - Requirement already satisfied: ml_dtypes>=0.5.0 in ./.venv/lib/python3.12/site-packages (from jax>=0.4.20->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 28)) (0.5.1)\n2025-06-06 12:52:16,857 - DEBUG - Requirement already satisfied: opt_einsum in ./.venv/lib/python3.12/site-packages (from jax>=0.4.20->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 28)) (3.4.0)\n2025-06-06 12:52:16,864 - DEBUG - Requirement already satisfied: coverage>=7.5 in ./.venv/lib/python3.12/site-packages (from coverage[toml]>=7.5->pytest-cov>=4.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 33)) (7.8.2)\n2025-06-06 12:52:16,868 - DEBUG - Requirement already satisfied: mccabe<0.8.0,>=0.7.0 in ./.venv/lib/python3.12/site-packages (from flake8>=6.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 37)) (0.7.0)\n2025-06-06 12:52:16,868 - DEBUG - Requirement already satisfied: pycodestyle<2.14.0,>=2.13.0 in ./.venv/lib/python3.12/site-packages (from flake8>=6.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 37)) (2.13.0)\n2025-06-06 12:52:16,869 - DEBUG - Requirement already satisfied: pyflakes<3.4.0,>=3.3.0 in ./.venv/lib/python3.12/site-packages (from flake8>=6.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 37)) (3.3.2)\n2025-06-06 12:52:16,874 - DEBUG - Requirement already satisfied: mypy_extensions>=1.0.0 in ./.venv/lib/python3.12/site-packages (from mypy>=1.3.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 38)) (1.1.0)\n2025-06-06 12:52:16,874 - DEBUG - Requirement already satisfied: pathspec>=0.9.0 in ./.venv/lib/python3.12/site-packages (from mypy>=1.3.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 38)) (0.12.1)\n2025-06-06 12:52:16,879 - DEBUG - Requirement already satisfied: click>=8.0.0 in ./.venv/lib/python3.12/site-packages (from black>=23.3.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 39)) (8.2.1)\n2025-06-06 12:52:16,880 - DEBUG - Requirement already satisfied: platformdirs>=2 in ./.venv/lib/python3.12/site-packages (from black>=23.3.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 39)) (4.3.8)\n2025-06-06 12:52:16,884 - DEBUG - Requirement already satisfied: sphinxcontrib-applehelp>=1.0.7 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.0.0)\n2025-06-06 12:52:16,884 - DEBUG - Requirement already satisfied: sphinxcontrib-devhelp>=1.0.6 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.0.0)\n2025-06-06 12:52:16,884 - DEBUG - Requirement already satisfied: sphinxcontrib-htmlhelp>=2.0.6 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.1.0)\n2025-06-06 12:52:16,885 - DEBUG - Requirement already satisfied: sphinxcontrib-jsmath>=1.0.1 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (1.0.1)\n2025-06-06 12:52:16,885 - DEBUG - Requirement already satisfied: sphinxcontrib-qthelp>=1.0.6 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.0.0)\n2025-06-06 12:52:16,886 - DEBUG - Requirement already satisfied: sphinxcontrib-serializinghtml>=1.1.9 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.0.0)\n2025-06-06 12:52:16,886 - DEBUG - Requirement already satisfied: Pygments>=2.17 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.19.1)\n2025-06-06 12:52:16,887 - DEBUG - Requirement already satisfied: docutils<0.22,>=0.20 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (0.21.2)\n2025-06-06 12:52:16,887 - DEBUG - Requirement already satisfied: snowballstemmer>=2.2 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (3.0.1)\n2025-06-06 12:52:16,888 - DEBUG - Requirement already satisfied: babel>=2.13 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.17.0)\n2025-06-06 12:52:16,888 - DEBUG - Requirement already satisfied: alabaster>=0.7.14 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (1.0.0)\n2025-06-06 12:52:16,889 - DEBUG - Requirement already satisfied: imagesize>=1.3 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (1.4.1)\n2025-06-06 12:52:16,889 - DEBUG - Requirement already satisfied: requests>=2.30.0 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (2.32.3)\n2025-06-06 12:52:16,889 - DEBUG - Requirement already satisfied: roman-numerals-py>=1.0.0 in ./.venv/lib/python3.12/site-packages (from sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (3.1.0)\n2025-06-06 12:52:16,898 - DEBUG - Requirement already satisfied: sphinxcontrib-jquery<5,>=4 in ./.venv/lib/python3.12/site-packages (from sphinx-rtd-theme>=1.2.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 44)) (4.1)\n2025-06-06 12:52:16,902 - DEBUG - Requirement already satisfied: decorator in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (5.2.1)\n2025-06-06 12:52:16,902 - DEBUG - Requirement already satisfied: ipython-pygments-lexers in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (1.1.1)\n2025-06-06 12:52:16,903 - DEBUG - Requirement already satisfied: jedi>=0.16 in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.19.2)\n2025-06-06 12:52:16,903 - DEBUG - Requirement already satisfied: matplotlib-inline in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.1.7)\n2025-06-06 12:52:16,904 - DEBUG - Requirement already satisfied: pexpect>4.3 in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (4.9.0)\n2025-06-06 12:52:16,904 - DEBUG - Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (3.0.51)\n2025-06-06 12:52:16,905 - DEBUG - Requirement already satisfied: stack_data in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.6.3)\n2025-06-06 12:52:16,906 - DEBUG - Requirement already satisfied: traitlets>=5.13.0 in ./.venv/lib/python3.12/site-packages (from ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (5.14.3)\n2025-06-06 12:52:16,910 - DEBUG - Requirement already satisfied: wcwidth in ./.venv/lib/python3.12/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.2.13)\n2025-06-06 12:52:16,929 - DEBUG - Requirement already satisfied: urllib3>=2 in ./.venv/lib/python3.12/site-packages (from types-requests>=2.30.0.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 51)) (2.4.0)\n2025-06-06 12:52:16,970 - DEBUG - Requirement already satisfied: parso<0.9.0,>=0.8.4 in ./.venv/lib/python3.12/site-packages (from jedi>=0.16->ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.8.4)\n2025-06-06 12:52:16,977 - DEBUG - Requirement already satisfied: MarkupSafe>=2.0 in ./.venv/lib/python3.12/site-packages (from jinja2->altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (3.0.2)\n2025-06-06 12:52:16,979 - DEBUG - Requirement already satisfied: jsonschema-specifications>=2023.03.6 in ./.venv/lib/python3.12/site-packages (from jsonschema>=3.0->altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (2025.4.1)\n2025-06-06 12:52:16,980 - DEBUG - Requirement already satisfied: referencing>=0.28.4 in ./.venv/lib/python3.12/site-packages (from jsonschema>=3.0->altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (0.36.2)\n2025-06-06 12:52:16,980 - DEBUG - Requirement already satisfied: rpds-py>=0.7.1 in ./.venv/lib/python3.12/site-packages (from jsonschema>=3.0->altair>=5.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 24)) (0.25.1)\n2025-06-06 12:52:16,994 - DEBUG - Requirement already satisfied: importlib_metadata in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (8.7.0)\n2025-06-06 12:52:16,994 - DEBUG - Requirement already satisfied: jupyter-cache>=0.5 in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.0.1)\n2025-06-06 12:52:16,995 - DEBUG - Requirement already satisfied: nbclient in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.10.2)\n2025-06-06 12:52:16,995 - DEBUG - Requirement already satisfied: myst-parser>=1.0.0 in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (4.0.1)\n2025-06-06 12:52:16,995 - DEBUG - Requirement already satisfied: nbformat>=5.0 in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (5.10.4)\n2025-06-06 12:52:16,996 - DEBUG - Requirement already satisfied: pyyaml in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (6.0.2)\n2025-06-06 12:52:16,997 - DEBUG - Requirement already satisfied: ipykernel in ./.venv/lib/python3.12/site-packages (from myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (6.29.5)\n2025-06-06 12:52:17,003 - DEBUG - Requirement already satisfied: sqlalchemy<3,>=1.3.12 in ./.venv/lib/python3.12/site-packages (from jupyter-cache>=0.5->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (2.0.41)\n2025-06-06 12:52:17,003 - DEBUG - Requirement already satisfied: tabulate in ./.venv/lib/python3.12/site-packages (from jupyter-cache>=0.5->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.9.0)\n2025-06-06 12:52:17,007 - DEBUG - Requirement already satisfied: greenlet>=1 in ./.venv/lib/python3.12/site-packages (from sqlalchemy<3,>=1.3.12->jupyter-cache>=0.5->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (3.2.2)\n2025-06-06 12:52:17,015 - DEBUG - Requirement already satisfied: markdown-it-py~=3.0 in ./.venv/lib/python3.12/site-packages (from myst-parser>=1.0.0->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (3.0.0)\n2025-06-06 12:52:17,015 - DEBUG - Requirement already satisfied: mdit-py-plugins>=0.4.1,~=0.4 in ./.venv/lib/python3.12/site-packages (from myst-parser>=1.0.0->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.4.2)\n2025-06-06 12:52:17,020 - DEBUG - Requirement already satisfied: mdurl~=0.1 in ./.venv/lib/python3.12/site-packages (from markdown-it-py~=3.0->myst-parser>=1.0.0->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.1.2)\n2025-06-06 12:52:17,031 - DEBUG - Requirement already satisfied: jupyter-client>=6.1.12 in ./.venv/lib/python3.12/site-packages (from nbclient->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (8.6.3)\n2025-06-06 12:52:17,032 - DEBUG - Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in ./.venv/lib/python3.12/site-packages (from nbclient->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (5.7.2)\n2025-06-06 12:52:17,037 - DEBUG - Requirement already satisfied: pyzmq>=23.0 in ./.venv/lib/python3.12/site-packages (from jupyter-client>=6.1.12->nbclient->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (26.4.0)\n2025-06-06 12:52:17,037 - DEBUG - Requirement already satisfied: tornado>=6.2 in ./.venv/lib/python3.12/site-packages (from jupyter-client>=6.1.12->nbclient->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (6.5)\n2025-06-06 12:52:17,044 - DEBUG - Requirement already satisfied: fastjsonschema>=2.15 in ./.venv/lib/python3.12/site-packages (from nbformat>=5.0->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (2.21.1)\n2025-06-06 12:52:17,050 - DEBUG - Requirement already satisfied: et-xmlfile in ./.venv/lib/python3.12/site-packages (from openpyxl>=3.0.7->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (2.0.0)\n2025-06-06 12:52:17,057 - DEBUG - Requirement already satisfied: ptyprocess>=0.5 in ./.venv/lib/python3.12/site-packages (from pexpect>4.3->ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.7.0)\n2025-06-06 12:52:17,083 - DEBUG - Requirement already satisfied: charset-normalizer<4,>=2 in ./.venv/lib/python3.12/site-packages (from requests>=2.30.0->sphinx>=7.0.1->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 43)) (3.4.2)\n2025-06-06 12:52:17,154 - DEBUG - Requirement already satisfied: zipp>=3.20 in ./.venv/lib/python3.12/site-packages (from importlib_metadata->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (3.21.0)\n2025-06-06 12:52:17,164 - DEBUG - Requirement already satisfied: comm>=0.1.1 in ./.venv/lib/python3.12/site-packages (from ipykernel->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (0.2.2)\n2025-06-06 12:52:17,165 - DEBUG - Requirement already satisfied: debugpy>=1.6.5 in ./.venv/lib/python3.12/site-packages (from ipykernel->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.8.14)\n2025-06-06 12:52:17,166 - DEBUG - Requirement already satisfied: nest-asyncio in ./.venv/lib/python3.12/site-packages (from ipykernel->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (1.6.0)\n2025-06-06 12:52:17,166 - DEBUG - Requirement already satisfied: psutil in ./.venv/lib/python3.12/site-packages (from ipykernel->myst-nb>=0.13.1->inferactively-pymdp<0.1.0->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 11)) (7.0.0)\n2025-06-06 12:52:17,192 - DEBUG - Requirement already satisfied: executing>=1.2.0 in ./.venv/lib/python3.12/site-packages (from stack_data->ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (2.2.0)\n2025-06-06 12:52:17,193 - DEBUG - Requirement already satisfied: asttokens>=2.1.0 in ./.venv/lib/python3.12/site-packages (from stack_data->ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (3.0.0)\n2025-06-06 12:52:17,193 - DEBUG - Requirement already satisfied: pure-eval in ./.venv/lib/python3.12/site-packages (from stack_data->ipython>=8.13.2->-r /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/requirements.txt (line 47)) (0.2.3)\n2025-06-06 12:52:17,357 - INFO - \u2705 Dependencies installation completed\n2025-06-06 12:52:17,357 - INFO - \u2705 All dependencies installed successfully (took 0.9s)\n2025-06-06 12:52:17,357 - INFO - \ud83d\udccb Getting list of installed packages...\n2025-06-06 12:52:17,567 - INFO - \ud83d\udce6 Found 138 installed packages in the virtual environment\n2025-06-06 12:52:17,567 - INFO - \ud83d\udccb Installed packages:\n2025-06-06 12:52:17,567 - INFO -   - Jinja2: 3.1.6\n2025-06-06 12:52:17,568 - INFO -   - Markdown: 3.8\n2025-06-06 12:52:17,568 - INFO -   - MarkupSafe: 3.0.2\n2025-06-06 12:52:17,568 - INFO -   - PyYAML: 6.0.2\n2025-06-06 12:52:17,568 - INFO -   - Pygments: 2.19.1\n2025-06-06 12:52:17,568 - INFO -   - SQLAlchemy: 2.0.41\n2025-06-06 12:52:17,568 - INFO -   - Sphinx: 8.2.3\n2025-06-06 12:52:17,568 - INFO -   - XlsxWriter: 3.2.3\n2025-06-06 12:52:17,568 - INFO -   - alabaster: 1.0.0\n2025-06-06 12:52:17,568 - INFO -   - altair: 5.5.0\n2025-06-06 12:52:17,568 - INFO -   - annotated-types: 0.7.0\n2025-06-06 12:52:17,568 - INFO -   - anyio: 4.9.0\n2025-06-06 12:52:17,568 - INFO -   - asttokens: 3.0.0\n2025-06-06 12:52:17,568 - INFO -   - attrs: 25.3.0\n2025-06-06 12:52:17,568 - INFO -   - autograd: 1.8.0\n2025-06-06 12:52:17,568 - INFO -   - babel: 2.17.0\n2025-06-06 12:52:17,568 - INFO -   - black: 25.1.0\n2025-06-06 12:52:17,568 - INFO -   - certifi: 2025.4.26\n2025-06-06 12:52:17,568 - INFO -   - charset-normalizer: 3.4.2\n2025-06-06 12:52:17,568 - INFO -   - click: 8.2.1\n2025-06-06 12:52:17,568 - INFO -   - comm: 0.2.2\n2025-06-06 12:52:17,568 - INFO -   - contourpy: 1.3.2\n2025-06-06 12:52:17,568 - INFO -   - coverage: 7.8.2\n2025-06-06 12:52:17,568 - INFO -   - cycler: 0.12.1\n2025-06-06 12:52:17,568 - INFO -   - debugpy: 1.8.14\n2025-06-06 12:52:17,568 - INFO -   - decorator: 5.2.1\n2025-06-06 12:52:17,568 - INFO -   - discopy: 1.2.0\n2025-06-06 12:52:17,568 - INFO -   - distro: 1.9.0\n2025-06-06 12:52:17,568 - INFO -   - docutils: 0.21.2\n2025-06-06 12:52:17,568 - INFO -   - et_xmlfile: 2.0.0\n2025-06-06 12:52:17,568 - INFO -   - executing: 2.2.0\n2025-06-06 12:52:17,568 - INFO -   - fastjsonschema: 2.21.1\n2025-06-06 12:52:17,568 - INFO -   - flake8: 7.2.0\n2025-06-06 12:52:17,568 - INFO -   - fonttools: 4.58.2\n2025-06-06 12:52:17,568 - INFO -   - graphviz: 0.20.3\n2025-06-06 12:52:17,568 - INFO -   - greenlet: 3.2.2\n2025-06-06 12:52:17,568 - INFO -   - h11: 0.16.0\n2025-06-06 12:52:17,568 - INFO -   - httpcore: 1.0.9\n2025-06-06 12:52:17,568 - INFO -   - httpx: 0.28.1\n2025-06-06 12:52:17,568 - INFO -   - idna: 3.10\n2025-06-06 12:52:17,568 - INFO -   - imagesize: 1.4.1\n2025-06-06 12:52:17,568 - INFO -   - importlib_metadata: 8.7.0\n2025-06-06 12:52:17,568 - INFO -   - inferactively-pymdp: 0.0.7.1\n2025-06-06 12:52:17,568 - INFO -   - iniconfig: 2.1.0\n2025-06-06 12:52:17,568 - INFO -   - ipdb: 0.13.13\n2025-06-06 12:52:17,568 - INFO -   - ipykernel: 6.29.5\n2025-06-06 12:52:17,568 - INFO -   - ipython: 9.2.0\n2025-06-06 12:52:17,568 - INFO -   - ipython_pygments_lexers: 1.1.1\n2025-06-06 12:52:17,568 - INFO -   - isort: 6.0.1\n2025-06-06 12:52:17,568 - INFO -   - jax: 0.6.0\n2025-06-06 12:52:17,568 - INFO -   - jaxlib: 0.6.0\n2025-06-06 12:52:17,568 - INFO -   - jedi: 0.19.2\n2025-06-06 12:52:17,568 - INFO -   - jiter: 0.10.0\n2025-06-06 12:52:17,568 - INFO -   - jsonschema: 4.23.0\n2025-06-06 12:52:17,568 - INFO -   - jsonschema-specifications: 2025.4.1\n2025-06-06 12:52:17,568 - INFO -   - jupyter-cache: 1.0.1\n2025-06-06 12:52:17,568 - INFO -   - jupyter_client: 8.6.3\n2025-06-06 12:52:17,568 - INFO -   - jupyter_core: 5.7.2\n2025-06-06 12:52:17,568 - INFO -   - kiwisolver: 1.4.8\n2025-06-06 12:52:17,568 - INFO -   - markdown-it-py: 3.0.0\n2025-06-06 12:52:17,568 - INFO -   - matplotlib: 3.10.3\n2025-06-06 12:52:17,568 - INFO -   - matplotlib-inline: 0.1.7\n2025-06-06 12:52:17,568 - INFO -   - mccabe: 0.7.0\n2025-06-06 12:52:17,568 - INFO -   - mdit-py-plugins: 0.4.2\n2025-06-06 12:52:17,568 - INFO -   - mdurl: 0.1.2\n2025-06-06 12:52:17,568 - INFO -   - ml_dtypes: 0.5.1\n2025-06-06 12:52:17,568 - INFO -   - mypy: 1.16.0\n2025-06-06 12:52:17,568 - INFO -   - mypy_extensions: 1.1.0\n2025-06-06 12:52:17,568 - INFO -   - myst-nb: 1.2.0\n2025-06-06 12:52:17,568 - INFO -   - myst-parser: 4.0.1\n2025-06-06 12:52:17,568 - INFO -   - narwhals: 1.40.0\n2025-06-06 12:52:17,568 - INFO -   - nbclient: 0.10.2\n2025-06-06 12:52:17,568 - INFO -   - nbformat: 5.10.4\n2025-06-06 12:52:17,568 - INFO -   - nest-asyncio: 1.6.0\n2025-06-06 12:52:17,568 - INFO -   - networkx: 3.5\n2025-06-06 12:52:17,568 - INFO -   - nose: 1.3.7\n2025-06-06 12:52:17,568 - INFO -   - numpy: 2.2.6\n2025-06-06 12:52:17,568 - INFO -   - openai: 1.79.0\n2025-06-06 12:52:17,568 - INFO -   - openpyxl: 3.1.5\n2025-06-06 12:52:17,568 - INFO -   - opt_einsum: 3.4.0\n2025-06-06 12:52:17,568 - INFO -   - packaging: 25.0\n2025-06-06 12:52:17,568 - INFO -   - pandas: 2.2.3\n2025-06-06 12:52:17,568 - INFO -   - parso: 0.8.4\n2025-06-06 12:52:17,568 - INFO -   - pathspec: 0.12.1\n2025-06-06 12:52:17,568 - INFO -   - pexpect: 4.9.0\n2025-06-06 12:52:17,568 - INFO -   - pillow: 11.2.1\n2025-06-06 12:52:17,568 - INFO -   - pip: 25.1.1\n2025-06-06 12:52:17,568 - INFO -   - platformdirs: 4.3.8\n2025-06-06 12:52:17,569 - INFO -   - pluggy: 1.6.0\n2025-06-06 12:52:17,569 - INFO -   - prompt_toolkit: 3.0.51\n2025-06-06 12:52:17,569 - INFO -   - psutil: 7.0.0\n2025-06-06 12:52:17,569 - INFO -   - ptyprocess: 0.7.0\n2025-06-06 12:52:17,569 - INFO -   - pure_eval: 0.2.3\n2025-06-06 12:52:17,569 - INFO -   - py: 1.11.0\n2025-06-06 12:52:17,569 - INFO -   - py-spy: 0.4.0\n2025-06-06 12:52:17,569 - INFO -   - pycodestyle: 2.13.0\n2025-06-06 12:52:17,569 - INFO -   - pydantic: 2.11.4\n2025-06-06 12:52:17,569 - INFO -   - pydantic_core: 2.33.2\n2025-06-06 12:52:17,569 - INFO -   - pyflakes: 3.3.2\n2025-06-06 12:52:17,569 - INFO -   - pyparsing: 3.2.3\n2025-06-06 12:52:17,569 - INFO -   - pytest: 8.3.5\n2025-06-06 12:52:17,569 - INFO -   - pytest-cov: 6.1.1\n2025-06-06 12:52:17,569 - INFO -   - pytest-mock: 3.14.1\n2025-06-06 12:52:17,569 - INFO -   - python-dateutil: 2.9.0.post0\n2025-06-06 12:52:17,569 - INFO -   - python-dotenv: 1.1.0\n2025-06-06 12:52:17,569 - INFO -   - pytz: 2025.2\n2025-06-06 12:52:17,569 - INFO -   - pyzmq: 26.4.0\n2025-06-06 12:52:17,569 - INFO -   - referencing: 0.36.2\n2025-06-06 12:52:17,569 - INFO -   - requests: 2.32.3\n2025-06-06 12:52:17,569 - INFO -   - roman-numerals-py: 3.1.0\n2025-06-06 12:52:17,569 - INFO -   - rpds-py: 0.25.1\n2025-06-06 12:52:17,569 - INFO -   - scipy: 1.15.3\n2025-06-06 12:52:17,569 - INFO -   - seaborn: 0.13.2\n2025-06-06 12:52:17,569 - INFO -   - six: 1.17.0\n2025-06-06 12:52:17,569 - INFO -   - sniffio: 1.3.1\n2025-06-06 12:52:17,569 - INFO -   - snowballstemmer: 3.0.1\n2025-06-06 12:52:17,569 - INFO -   - sphinx-rtd-theme: 3.0.2\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-applehelp: 2.0.0\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-devhelp: 2.0.0\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-htmlhelp: 2.1.0\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-jquery: 4.1\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-jsmath: 1.0.1\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-qthelp: 2.0.0\n2025-06-06 12:52:17,569 - INFO -   - sphinxcontrib-serializinghtml: 2.0.0\n2025-06-06 12:52:17,569 - INFO -   - stack-data: 0.6.3\n2025-06-06 12:52:17,569 - INFO -   - tabulate: 0.9.0\n2025-06-06 12:52:17,569 - INFO -   - toml: 0.10.2\n2025-06-06 12:52:17,569 - INFO -   - tornado: 6.5\n2025-06-06 12:52:17,569 - INFO -   - tqdm: 4.67.1\n2025-06-06 12:52:17,569 - INFO -   - traitlets: 5.14.3\n2025-06-06 12:52:17,569 - INFO -   - types-Markdown: 3.8.0.20250415\n2025-06-06 12:52:17,569 - INFO -   - types-requests: 2.32.0.20250602\n2025-06-06 12:52:17,569 - INFO -   - typing-inspection: 0.4.0\n2025-06-06 12:52:17,569 - INFO -   - typing_extensions: 4.13.2\n2025-06-06 12:52:17,569 - INFO -   - tzdata: 2025.2\n2025-06-06 12:52:17,569 - INFO -   - urllib3: 2.4.0\n2025-06-06 12:52:17,569 - INFO -   - wcwidth: 0.2.13\n2025-06-06 12:52:17,569 - INFO -   - zipp: 3.21.0\n2025-06-06 12:52:17,569 - INFO - \ud83d\udcc4 Full package list saved to: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/installed_packages.json\n2025-06-06 12:52:17,569 - INFO - \u2705 Dependencies installed in 2.0s\n2025-06-06 12:52:17,569 - INFO -\n\ud83c\udf89 Setup completed successfully!\n2025-06-06 12:52:17,569 - INFO - \u23f1\ufe0f Total time: 2.2s\n2025-06-06 12:52:17,569 - INFO -\nTo activate the virtual environment:\n2025-06-06 12:52:17,569 - INFO -   source .venv/bin/activate\n2025-06-06 12:52:17,569 - __main__ - INFO -   \u2705 Python virtual environment and dependencies setup completed.\n2025-06-06 12:52:17,569 - __main__ - INFO -   Phase 3: Generating installed packages report...\n2025-06-06 12:52:17,569 - __main__ - INFO - \ud83d\udccb Generating installed packages report...\n2025-06-06 12:52:17,569 - __main__ - DEBUG - Running /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/bin/pip list --format=json\n2025-06-06 12:52:17,787 - __main__ - INFO - \ud83d\udce6 Found 138 installed packages in the virtual environment\n2025-06-06 12:52:17,787 - __main__ - INFO - Installed packages:\n2025-06-06 12:52:17,787 - __main__ - INFO -   - Jinja2: 3.1.6\n2025-06-06 12:52:17,787 - __main__ - INFO -   - Markdown: 3.8\n2025-06-06 12:52:17,787 - __main__ - INFO -   - MarkupSafe: 3.0.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - PyYAML: 6.0.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - Pygments: 2.19.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - SQLAlchemy: 2.0.41\n2025-06-06 12:52:17,788 - __main__ - INFO -   - Sphinx: 8.2.3\n2025-06-06 12:52:17,788 - __main__ - INFO -   - XlsxWriter: 3.2.3\n2025-06-06 12:52:17,788 - __main__ - INFO -   - alabaster: 1.0.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - altair: 5.5.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - annotated-types: 0.7.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - anyio: 4.9.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - asttokens: 3.0.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - attrs: 25.3.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - autograd: 1.8.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - babel: 2.17.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - black: 25.1.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - certifi: 2025.4.26\n2025-06-06 12:52:17,788 - __main__ - INFO -   - charset-normalizer: 3.4.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - click: 8.2.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - comm: 0.2.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - contourpy: 1.3.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - coverage: 7.8.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - cycler: 0.12.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - debugpy: 1.8.14\n2025-06-06 12:52:17,788 - __main__ - INFO -   - decorator: 5.2.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - discopy: 1.2.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - distro: 1.9.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - docutils: 0.21.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - et_xmlfile: 2.0.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - executing: 2.2.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - fastjsonschema: 2.21.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - flake8: 7.2.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - fonttools: 4.58.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - graphviz: 0.20.3\n2025-06-06 12:52:17,788 - __main__ - INFO -   - greenlet: 3.2.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - h11: 0.16.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - httpcore: 1.0.9\n2025-06-06 12:52:17,788 - __main__ - INFO -   - httpx: 0.28.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - idna: 3.10\n2025-06-06 12:52:17,788 - __main__ - INFO -   - imagesize: 1.4.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - importlib_metadata: 8.7.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - inferactively-pymdp: 0.0.7.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - iniconfig: 2.1.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - ipdb: 0.13.13\n2025-06-06 12:52:17,788 - __main__ - INFO -   - ipykernel: 6.29.5\n2025-06-06 12:52:17,788 - __main__ - INFO -   - ipython: 9.2.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - ipython_pygments_lexers: 1.1.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - isort: 6.0.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jax: 0.6.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jaxlib: 0.6.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jedi: 0.19.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jiter: 0.10.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jsonschema: 4.23.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jsonschema-specifications: 2025.4.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jupyter-cache: 1.0.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jupyter_client: 8.6.3\n2025-06-06 12:52:17,788 - __main__ - INFO -   - jupyter_core: 5.7.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - kiwisolver: 1.4.8\n2025-06-06 12:52:17,788 - __main__ - INFO -   - markdown-it-py: 3.0.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - matplotlib: 3.10.3\n2025-06-06 12:52:17,788 - __main__ - INFO -   - matplotlib-inline: 0.1.7\n2025-06-06 12:52:17,788 - __main__ - INFO -   - mccabe: 0.7.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - mdit-py-plugins: 0.4.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - mdurl: 0.1.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - ml_dtypes: 0.5.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - mypy: 1.16.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - mypy_extensions: 1.1.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - myst-nb: 1.2.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - myst-parser: 4.0.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - narwhals: 1.40.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - nbclient: 0.10.2\n2025-06-06 12:52:17,788 - __main__ - INFO -   - nbformat: 5.10.4\n2025-06-06 12:52:17,788 - __main__ - INFO -   - nest-asyncio: 1.6.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - networkx: 3.5\n2025-06-06 12:52:17,788 - __main__ - INFO -   - nose: 1.3.7\n2025-06-06 12:52:17,788 - __main__ - INFO -   - numpy: 2.2.6\n2025-06-06 12:52:17,788 - __main__ - INFO -   - openai: 1.79.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - openpyxl: 3.1.5\n2025-06-06 12:52:17,788 - __main__ - INFO -   - opt_einsum: 3.4.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - packaging: 25.0\n2025-06-06 12:52:17,788 - __main__ - INFO -   - pandas: 2.2.3\n2025-06-06 12:52:17,788 - __main__ - INFO -   - parso: 0.8.4\n2025-06-06 12:52:17,788 - __main__ - INFO -   - pathspec: 0.12.1\n2025-06-06 12:52:17,788 - __main__ - INFO -   - pexpect: 4.9.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pillow: 11.2.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pip: 25.1.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - platformdirs: 4.3.8\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pluggy: 1.6.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - prompt_toolkit: 3.0.51\n2025-06-06 12:52:17,789 - __main__ - INFO -   - psutil: 7.0.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - ptyprocess: 0.7.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pure_eval: 0.2.3\n2025-06-06 12:52:17,789 - __main__ - INFO -   - py: 1.11.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - py-spy: 0.4.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pycodestyle: 2.13.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pydantic: 2.11.4\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pydantic_core: 2.33.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pyflakes: 3.3.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pyparsing: 3.2.3\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pytest: 8.3.5\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pytest-cov: 6.1.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pytest-mock: 3.14.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - python-dateutil: 2.9.0.post0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - python-dotenv: 1.1.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pytz: 2025.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - pyzmq: 26.4.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - referencing: 0.36.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - requests: 2.32.3\n2025-06-06 12:52:17,789 - __main__ - INFO -   - roman-numerals-py: 3.1.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - rpds-py: 0.25.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - scipy: 1.15.3\n2025-06-06 12:52:17,789 - __main__ - INFO -   - seaborn: 0.13.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - six: 1.17.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sniffio: 1.3.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - snowballstemmer: 3.0.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinx-rtd-theme: 3.0.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-applehelp: 2.0.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-devhelp: 2.0.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-htmlhelp: 2.1.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-jquery: 4.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-jsmath: 1.0.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-qthelp: 2.0.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - sphinxcontrib-serializinghtml: 2.0.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - stack-data: 0.6.3\n2025-06-06 12:52:17,789 - __main__ - INFO -   - tabulate: 0.9.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - toml: 0.10.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - tornado: 6.5\n2025-06-06 12:52:17,789 - __main__ - INFO -   - tqdm: 4.67.1\n2025-06-06 12:52:17,789 - __main__ - INFO -   - traitlets: 5.14.3\n2025-06-06 12:52:17,789 - __main__ - INFO -   - types-Markdown: 3.8.0.20250415\n2025-06-06 12:52:17,789 - __main__ - INFO -   - types-requests: 2.32.0.20250602\n2025-06-06 12:52:17,789 - __main__ - INFO -   - typing-inspection: 0.4.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - typing_extensions: 4.13.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - tzdata: 2025.2\n2025-06-06 12:52:17,789 - __main__ - INFO -   - urllib3: 2.4.0\n2025-06-06 12:52:17,789 - __main__ - INFO -   - wcwidth: 0.2.13\n2025-06-06 12:52:17,789 - __main__ - INFO -   - zipp: 3.21.0\n2025-06-06 12:52:17,789 - __main__ - INFO - \ud83d\udcc4 Package list saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/installed_packages.json\n2025-06-06 12:52:17,789 - __main__ - INFO -   \u2705 Package report completed.\n2025-06-06 12:52:17,789 - __main__ - INFO - \u2705 Step 2: Setup complete (took 2.7 seconds)",
      "stderr": ""
    },
    {
      "step_number": 4,
      "script_name": "4_gnn_type_checker.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:17.810935",
      "end_time": "2025-06-06T12:52:19.695846",
      "duration_seconds": 1.884911,
      "details": "",
      "stdout": "2025-06-06 12:52:18,348 - __main__ - INFO - \u25b6\ufe0f Starting Step 4: Type Checking (4_gnn_type_checker.py)...\n2025-06-06 12:52:18,348 - __main__ - DEBUG - Set logger '__main__' to DEBUG within run_type_checker.\n2025-06-06 12:52:18,348 - __main__ - DEBUG - Set logger 'gnn_type_checker' to INFO.\n2025-06-06 12:52:18,348 - __main__ - INFO -   \ud83d\udc0d Invoking GNN Type Checker module with arguments: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples --output-dir /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_type_check --report-file type_check_report.md --project-root /home/trim/Documents/GitHub/GeneralizedNotationNotation --recursive --estimate-resources\n2025-06-06 12:52:18,348 - __main__ - INFO -   \u2139\ufe0f Target GNN files in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:52:18,348 - __main__ - INFO -   \u2139\ufe0f Type checker outputs will be in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_type_check\n2025-06-06 12:52:18,348 - __main__ - INFO -   \ud83d\udcdd Main type check report will be: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_type_check/type_check_report.md\n2025-06-06 12:52:19,625 - __main__ - INFO - \u2705 GNN Type Checker module completed successfully.\n2025-06-06 12:52:19,625 - __main__ - INFO - \u2705 Step 4: Type Checking complete.",
      "stderr": ""
    },
    {
      "step_number": 5,
      "script_name": "5_export.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:19.695886",
      "end_time": "2025-06-06T12:52:19.889270",
      "duration_seconds": 0.193384,
      "details": "",
      "stdout": "2025-06-06 12:52:19,847 - __main__ - DEBUG - Script logger '__main__' level set to DEBUG.\n2025-06-06 12:52:19,847 - __main__ - INFO - \u25b6\ufe0f Starting Step 5: Export (5_export.py)\n2025-06-06 12:52:19,847 - __main__ - DEBUG -   Parsed args: Namespace(target_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'), output_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/output'), recursive=False, formats='json,xml,txt_summary,dsl', verbose=True)\n2025-06-06 12:52:19,847 - __main__ - INFO -   Ensured output directory for exports: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports\n2025-06-06 12:52:19,847 - __main__ - INFO -   Selected formats for export: ['json', 'xml', 'txt_summary', 'dsl']\n2025-06-06 12:52:19,848 - __main__ - INFO - Found 2 GNN file(s) to process for export from '/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'.\n2025-06-06 12:52:19,848 - __main__ - INFO -   Processing exports for GNN file: src/gnn/examples/pymdp_pomdp_agent.md\n2025-06-06 12:52:19,849 - __main__ - DEBUG -     \ud83d\udce4 Ensured export subdirectory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports/pymdp_pomdp_agent\n2025-06-06 12:52:19,849 - __main__ - DEBUG -       \ud83d\udce4 Exporting to JSON -> output/gnn_exports/pymdp_pomdp_agent/pymdp_pomdp_agent.json\n2025-06-06 12:52:19,850 - __main__ - INFO -       \u2705 Successfully exported to pymdp_pomdp_agent.json (format: json)\n2025-06-06 12:52:19,850 - __main__ - DEBUG -       \ud83d\udce4 Exporting to XML -> output/gnn_exports/pymdp_pomdp_agent/pymdp_pomdp_agent.xml\n2025-06-06 12:52:19,852 - __main__ - INFO -       \u2705 Successfully exported to pymdp_pomdp_agent.xml (format: xml)\n2025-06-06 12:52:19,852 - __main__ - DEBUG -       \ud83d\udce4 Exporting to TXT_SUMMARY -> output/gnn_exports/pymdp_pomdp_agent/pymdp_pomdp_agent.txt\n2025-06-06 12:52:19,852 - __main__ - INFO -       \u2705 Successfully exported to pymdp_pomdp_agent.txt (format: txt_summary)\n2025-06-06 12:52:19,852 - __main__ - DEBUG -       \ud83d\udce4 Exporting to DSL -> output/gnn_exports/pymdp_pomdp_agent/pymdp_pomdp_agent.gnn\n2025-06-06 12:52:19,852 - __main__ - INFO -       \u2705 Successfully exported to pymdp_pomdp_agent.gnn (format: dsl)\n2025-06-06 12:52:19,852 - __main__ - INFO -     \u2705 All 4 requested exports for src/gnn/examples/pymdp_pomdp_agent.md completed successfully.\n2025-06-06 12:52:19,852 - __main__ - INFO -   Processing exports for GNN file: src/gnn/examples/rxinfer_multiagent_gnn.md\n2025-06-06 12:52:19,853 - __main__ - DEBUG -     \ud83d\udce4 Ensured export subdirectory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports/rxinfer_multiagent_gnn\n2025-06-06 12:52:19,853 - __main__ - DEBUG -       \ud83d\udce4 Exporting to JSON -> output/gnn_exports/rxinfer_multiagent_gnn/rxinfer_multiagent_gnn.json\n2025-06-06 12:52:19,854 - __main__ - INFO -       \u2705 Successfully exported to rxinfer_multiagent_gnn.json (format: json)\n2025-06-06 12:52:19,854 - __main__ - DEBUG -       \ud83d\udce4 Exporting to XML -> output/gnn_exports/rxinfer_multiagent_gnn/rxinfer_multiagent_gnn.xml\n2025-06-06 12:52:19,856 - __main__ - INFO -       \u2705 Successfully exported to rxinfer_multiagent_gnn.xml (format: xml)\n2025-06-06 12:52:19,856 - __main__ - DEBUG -       \ud83d\udce4 Exporting to TXT_SUMMARY -> output/gnn_exports/rxinfer_multiagent_gnn/rxinfer_multiagent_gnn.txt\n2025-06-06 12:52:19,856 - __main__ - INFO -       \u2705 Successfully exported to rxinfer_multiagent_gnn.txt (format: txt_summary)\n2025-06-06 12:52:19,856 - __main__ - DEBUG -       \ud83d\udce4 Exporting to DSL -> output/gnn_exports/rxinfer_multiagent_gnn/rxinfer_multiagent_gnn.gnn\n2025-06-06 12:52:19,856 - __main__ - INFO -       \u2705 Successfully exported to rxinfer_multiagent_gnn.gnn (format: dsl)\n2025-06-06 12:52:19,856 - __main__ - INFO -     \u2705 All 4 requested exports for src/gnn/examples/rxinfer_multiagent_gnn.md completed successfully.\n2025-06-06 12:52:19,856 - __main__ - INFO - Export processing complete. Files with all formats successful: 2, Files with at least one failure: 0\n2025-06-06 12:52:19,856 - __main__ - INFO - \ud83d\udcc4 Generating GNN Export Step Summary Report...\n2025-06-06 12:52:19,857 - __main__ - INFO - \ud83d\udcc4 Export step summary report generated: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports/5_export_step_report.md\n2025-06-06 12:52:19,857 - __main__ - INFO - \ud83d\udcc4 Generating Overall GNN Processing Summary Report...\n2025-06-06 12:52:19,857 - __main__ - DEBUG -   \ud83d\udcca Found 2 .md files for overall summary in '/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'.\n2025-06-06 12:52:19,858 - __main__ - INFO - \ud83d\udcc4 Overall pipeline summary report saved to: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_processing_summary.md\n2025-06-06 12:52:19,858 - __main__ - INFO - \u2705 Step 5: Export operations finished.",
      "stderr": ""
    },
    {
      "step_number": 6,
      "script_name": "6_visualization.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:19.889313",
      "end_time": "2025-06-06T12:52:36.266527",
      "duration_seconds": 16.377214,
      "details": "",
      "stdout": "2025-06-06 12:52:20,384 - __main__ - INFO - \u25b6\ufe0f Starting Step 6: Visualization (6_visualization.py)\n2025-06-06 12:52:20,384 - __main__ - DEBUG -   Parsing options:\n2025-06-06 12:52:20,384 - __main__ - DEBUG -     Target directory/file: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:52:20,384 - __main__ - DEBUG -     Pipeline output directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:52:20,384 - __main__ - DEBUG -     Recursive: False\n2025-06-06 12:52:20,384 - __main__ - DEBUG -     Verbose: True\n2025-06-06 12:52:20,384 - __main__ - INFO - \ud83d\uddbc\ufe0f Preparing to generate GNN visualizations...\n2025-06-06 12:52:20,384 - __main__ - DEBUG -   \ud83c\udfaf Target GNN files in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:52:20,384 - __main__ - DEBUG -   \u0565\u056c Output visualizations will be in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization\n2025-06-06 12:52:20,384 - __main__ - DEBUG -   \u27a1\ufe0f Recursive mode: Disabled\n2025-06-06 12:52:20,385 - __main__ - DEBUG -   \ud83d\udc0d Invoking GNN Visualization module (visualization.cli.main)\n2025-06-06 12:52:20,385 - __main__ - DEBUG -      Arguments: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples --output-dir /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization --project-root /home/trim/Documents/GitHub/GeneralizedNotationNotation\nChecking for variables in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md...\nFound 21 variables: ['A_m0', 'A_m1', 'A_m2', 'B_f0', 'B_f1', 'C_m0', 'C_m1', 'C_m2', 'D_f0', 'D_f1', 's_f0', 's_f1', 's_prime_f0', 's_prime_f1', 'o_m0', 'o_m1', 'o_m2', '\u03c0_f1', 'u_f1', 'G', 't']\nState space visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/state_space.png\nChecking for edges in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md...\nFound 2 edges\nConnections visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/connections.png\n[GNNVisualizer] Found 'InitialParameterization' section for pymdp_pomdp_agent. Attempting matrix visualization.\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Am0.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Am1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Am2.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Bf0.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Bf1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Cm0.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Cm1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Cm2.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Df0.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/matrix_Df1.png\nCombined matrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/combined_matrices.png\n[GNNVisualizer] Found 'ActInfOntologyAnnotation' section for pymdp_pomdp_agent. Attempting ontology visualization.\nOntology visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/ontology_annotations.png\nCombined visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/pymdp_pomdp_agent/combined_visualization.png\nChecking for variables in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md...\nFound 60 variables: ['dt', 'gamma', 'nr_steps', 'nr_iterations', 'nr_agents', 'softmin_temperature', 'intermediate_steps', 'save_intermediates', 'A', 'B', 'C', 'initial_state_variance', 'control_variance', 'goal_constraint_variance', 'gamma_shape', 'gamma_scale_factor', 'x_limits', 'y_limits', 'fps', 'heatmap_resolution', 'plot_width', 'plot_height', 'agent_alpha', 'target_alpha', 'color_palette', 'door_obstacle_center_1', 'door_obstacle_size_1', 'door_obstacle_center_2', 'door_obstacle_size_2', 'wall_obstacle_center', 'wall_obstacle_size', 'combined_obstacle_center_1', 'combined_obstacle_size_1', 'combined_obstacle_center_2', 'combined_obstacle_size_2', 'combined_obstacle_center_3', 'combined_obstacle_size_3', 'agent1_id', 'agent1_radius', 'agent1_initial_position', 'agent1_target_position', 'agent2_id', 'agent2_radius', 'agent2_initial_position', 'agent2_target_position', 'agent3_id', 'agent3_radius', 'agent3_initial_position', 'agent3_target_position', 'agent4_id', 'agent4_radius', 'agent4_initial_position', 'agent4_target_position', 'experiment_seeds', 'results_dir', 'animation_template', 'control_vis_filename', 'obstacle_distance_filename', 'path_uncertainty_filename', 'convergence_filename']\nState space visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/state_space.png\nChecking for edges in /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md...\nFound 1 edges\nConnections visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/connections.png\n[GNNVisualizer] Found 'InitialParameterization' section for rxinfer_multiagent_gnn. Attempting matrix visualization.\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_A.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_B.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_C.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_xlimits.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_ylimits.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_doorobstaclecenter1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_doorobstaclesize1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_doorobstaclecenter2.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_doorobstaclesize2.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_wallobstaclecenter.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_wallobstaclesize.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_combinedobstaclecenter1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_combinedobstaclesize1.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_combinedobstaclecenter2.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_combinedobstaclesize2.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_combinedobstaclecenter3.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_combinedobstaclesize3.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent1initialposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent1targetposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent2initialposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent2targetposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent3initialposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent3targetposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent4initialposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_agent4targetposition.png\nMatrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/matrix_experimentseeds.png\nCombined matrix visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/combined_matrices.png\n[GNNVisualizer] Found 'ActInfOntologyAnnotation' section for rxinfer_multiagent_gnn. Attempting ontology visualization.\nOntology visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/ontology_annotations.png\nCombined visualization saved to /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization/rxinfer_multiagent_gnn/combined_visualization.png\nVisualizations generated in /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization\n2025-06-06 12:52:36,147 - __main__ - INFO - \u2705 GNN Visualization module completed successfully.\n2025-06-06 12:52:36,147 - __main__ - DEBUG -   \ud83d\uddbc\ufe0f Visualizations should be available in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_examples_visualization\n2025-06-06 12:52:36,147 - __main__ - DEBUG -   \ud83d\udcca Found 54 items (files/directories) in the output directory.\n2025-06-06 12:52:36,147 - __main__ - INFO - \u2705 Step 6: Visualization (6_visualization.py) - COMPLETED",
      "stderr": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/visualization/matrix_visualizer.py:247: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\nplt.tight_layout()  # Make room for colorbar and title\n/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/visualization/matrix_visualizer.py:247: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\nplt.tight_layout()  # Make room for colorbar and title"
    },
    {
      "step_number": 7,
      "script_name": "7_mcp.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:36.266569",
      "end_time": "2025-06-06T12:52:38.003120",
      "duration_seconds": 1.736551,
      "details": "",
      "stdout": "2025-06-06 12:52:37,592 - __main__ - DEBUG - Verbose logging enabled for standalone run of 7_mcp.py, including core MCP modules.\n2025-06-06 12:52:37,592 - __main__ - DEBUG - Script logger '__main__' level set to DEBUG.\n2025-06-06 12:52:37,592 - __main__ - INFO - \u25b6\ufe0f  Starting Step 7: MCP Operations (7_mcp.py)\n2025-06-06 12:52:37,592 - __main__ - DEBUG -   Parsing options (from main.py or standalone):\n2025-06-06 12:52:37,592 - __main__ - DEBUG -     Effective MCP Core Directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp\n2025-06-06 12:52:37,592 - __main__ - DEBUG -     Effective Project Source Root (for module scanning): /home/trim/Documents/GitHub/GeneralizedNotationNotation/src\n2025-06-06 12:52:37,592 - __main__ - DEBUG -     Output directory for MCP report: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:52:37,592 - __main__ - DEBUG -     Verbose: True\n2025-06-06 12:52:37,593 - __main__ - DEBUG - Set logger 'mcp' to DEBUG for MCP operations.\n2025-06-06 12:52:37,593 - __main__ - INFO -     \ud83d\ude80 Initializing MCP system to load registered tool descriptions...\n2025-06-06 12:52:37,593 - __main__ - INFO -     \u2705 MCP system initialization process completed successfully (SDK status OK, all modules loaded).\n2025-06-06 12:52:37,595 - __main__ - INFO -   \ud83d\udd0e Processing MCP integration checks and method discovery...\n2025-06-06 12:52:37,595 - __main__ - DEBUG -     \ud83d\udcd6 MCP Core Directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp\n2025-06-06 12:52:37,595 - __main__ - DEBUG -     \ud83c\udfd7\ufe0f Project Source Root for modules: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src\n2025-06-06 12:52:37,595 - __main__ - DEBUG -     Checking for core MCP files...\n2025-06-06 12:52:37,595 - __main__ - DEBUG -       \ud83d\udcd6 Core MCP file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp/mcp.py (20304 bytes)\n2025-06-06 12:52:37,595 - __main__ - DEBUG -       \ud83d\udcd6 Core MCP file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp/meta_mcp.py (4954 bytes)\n2025-06-06 12:52:37,595 - __main__ - DEBUG -       \ud83d\udcd6 Core MCP file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp/cli.py (4644 bytes)\n2025-06-06 12:52:37,595 - __main__ - DEBUG -       \ud83d\udcd6 Core MCP file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp/server_stdio.py (7620 bytes)\n2025-06-06 12:52:37,595 - __main__ - DEBUG -       \ud83d\udcd6 Core MCP file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp/server_http.py (7731 bytes)\n2025-06-06 12:52:37,595 - __main__ - DEBUG -       Processing module: export\n2025-06-06 12:52:37,595 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/export/mcp.py (7976 bytes)\n2025-06-06 12:52:37,595 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_json(gnn_file_path, output_file_path) - Description: Exports a GNN model to JSON format.\n2025-06-06 12:52:37,595 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_xml(gnn_file_path, output_file_path) - Description: Exports a GNN model to XML format.\n2025-06-06 12:52:37,595 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_plaintext_summary(gnn_file_path, output_file_path) - Description: Exports a GNN model to a human-readable plain text summary.\n2025-06-06 12:52:37,595 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_plaintext_dsl(gnn_file_path, output_file_path) - Description: Exports a GNN model back to its GNN DSL plain text format.\n2025-06-06 12:52:37,595 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_gexf(gnn_file_path, output_file_path) - Description: Exports a GNN model to GEXF graph format (requires NetworkX).\n2025-06-06 12:52:37,595 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_graphml(gnn_file_path, output_file_path) - Description: Exports a GNN model to GraphML graph format (requires NetworkX).\n2025-06-06 12:52:37,596 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_json_adjacency_list(gnn_file_path, output_file_path) - Description: Exports a GNN model to JSON Adjacency List graph format (requires NetworkX).\n2025-06-06 12:52:37,596 - __main__ - DEBUG -           Found registered MCP tool: export_gnn_to_python_pickle(gnn_file_path, output_file_path) - Description: Serializes a GNN model to a Python pickle file.\n2025-06-06 12:52:37,596 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/export/mcp.py\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: _handle_export(export_func, gnn_file_path, output_file_path, format_name, requires_nx) - \"Generic helper to run an export function and handle common exceptions.\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_json_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_xml_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_plaintext_summary_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_plaintext_dsl_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_gexf_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_graphml_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_json_adjacency_list_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: export_gnn_to_python_pickle_mcp(gnn_file_path, output_file_path) - \"\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         Found method: register_tools(mcp_instance) - \"Registers all GNN export tools with the MCP instance.\"...\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): _handle_export(export_func, gnn_file_path, output_file_path, format_name, requires_nx) - Docstring: Generic helper to run an export function and handle common exceptions.\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_json_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_xml_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_plaintext_summary_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_plaintext_dsl_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_gexf_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_graphml_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_json_adjacency_list_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): export_gnn_to_python_pickle_mcp(gnn_file_path, output_file_path) - Docstring:\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp_instance) - Docstring: Registers all GNN export tools with the MCP instance.\n2025-06-06 12:52:37,597 - __main__ - DEBUG -       Processing module: gnn\n2025-06-06 12:52:37,597 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/mcp.py (4122 bytes)\n2025-06-06 12:52:37,597 - __main__ - DEBUG -           Found registered MCP tool: get_gnn_documentation(doc_name) - Description: Retrieve the content of a GNN core documentation file (e.g., syntax, file structure).\n2025-06-06 12:52:37,597 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/mcp.py\n2025-06-06 12:52:37,598 - __main__ - DEBUG -         Found method: get_gnn_documentation(doc_name) - \"Retrieve content of a GNN documentation file.\"...\n2025-06-06 12:52:37,598 - __main__ - DEBUG -         Found method: _retrieve_gnn_doc_resource(uri) - \"Retrieve GNN documentation resource by URI.\"...\n2025-06-06 12:52:37,598 - __main__ - DEBUG -         Found method: register_tools(mcp_instance) - \"Register GNN documentation tools and resources with the MCP.\"...\n2025-06-06 12:52:37,598 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): _retrieve_gnn_doc_resource(uri) - Docstring: Retrieve GNN documentation resource by URI.\n2025-06-06 12:52:37,598 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp_instance) - Docstring: Register GNN documentation tools and resources with the MCP.\n2025-06-06 12:52:37,598 - __main__ - DEBUG -       Processing module: gnn_type_checker\n2025-06-06 12:52:37,598 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn_type_checker/mcp.py (10921 bytes)\n2025-06-06 12:52:37,598 - __main__ - DEBUG -           Found registered MCP tool: type_check_gnn_file(file_path) - Description: Runs the GNN type checker on a specified GNN model file.\n2025-06-06 12:52:37,598 - __main__ - DEBUG -           Found registered MCP tool: type_check_gnn_directory(dir_path, recursive, output_dir_base, report_md_filename) - Description: Runs the GNN type checker on all GNN files in a specified directory. If output_dir_base is provided, reports are generated.\n2025-06-06 12:52:37,598 - __main__ - DEBUG -           Found registered MCP tool: estimate_resources_for_gnn_file(file_path) - Description: Estimates computational resources (memory, inference, storage) for a GNN model file.\n2025-06-06 12:52:37,598 - __main__ - DEBUG -           Found registered MCP tool: estimate_resources_for_gnn_directory(dir_path, recursive) - Description: Estimates computational resources for all GNN files in a specified directory.\n2025-06-06 12:52:37,598 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn_type_checker/mcp.py\n2025-06-06 12:52:37,599 - __main__ - DEBUG -         Found method: type_check_gnn_file_mcp(file_path) - \"Run the GNN type checker on a single GNN file. Exposed via MCP.\"...\n2025-06-06 12:52:37,599 - __main__ - DEBUG -         Found method: type_check_gnn_directory_mcp(dir_path, recursive, output_dir_base, report_md_filename) - \"Run the GNN type checker on all GNN files in a directory. Exposed via MCP.\"...\n2025-06-06 12:52:37,599 - __main__ - DEBUG -         Found method: estimate_resources_for_gnn_file_mcp(file_path) - \"Estimate computational resources for a single GNN file. Exposed via MCP.\"...\n2025-06-06 12:52:37,599 - __main__ - DEBUG -         Found method: estimate_resources_for_gnn_directory_mcp(dir_path, recursive) - \"Estimate resources for all GNN files in a directory. Exposed via MCP.\"...\n2025-06-06 12:52:37,600 - __main__ - DEBUG -         Found method: register_tools(mcp_instance) - \"Register GNN type checker and resource estimator tools with the MCP.\"...\n2025-06-06 12:52:37,600 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): type_check_gnn_file_mcp(file_path) - Docstring: Run the GNN type checker on a single GNN file. Exposed via MCP.\n2025-06-06 12:52:37,600 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): type_check_gnn_directory_mcp(dir_path, recursive, output_dir_base, report_md_filename) - Docstring: Run the GNN type checker on all GNN files in a directory. Exposed via MCP.\n2025-06-06 12:52:37,600 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): estimate_resources_for_gnn_file_mcp(file_path) - Docstring: Estimate computational resources for a single GNN file. Exposed via MCP.\n2025-06-06 12:52:37,600 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): estimate_resources_for_gnn_directory_mcp(dir_path, recursive) - Docstring: Estimate resources for all GNN files in a directory. Exposed via MCP.\n2025-06-06 12:52:37,600 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp_instance) - Docstring: Register GNN type checker and resource estimator tools with the MCP.\n2025-06-06 12:52:37,600 - __main__ - DEBUG -       Processing module: ontology\n2025-06-06 12:52:37,600 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology/mcp.py (13473 bytes)\n2025-06-06 12:52:37,600 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology/mcp.py\n2025-06-06 12:52:37,601 - __main__ - DEBUG -         Found method: get_mcp_interface() - \"Returns the MCP interface for the Ontology module.\"...\n2025-06-06 12:52:37,601 - __main__ - DEBUG -         Found method: parse_gnn_ontology_section(gnn_file_content, verbose) - \"Parses the 'ActInfOntologyAnnotation' section from GNN file content.\"...\n2025-06-06 12:52:37,601 - __main__ - DEBUG -         Found method: load_defined_ontology_terms(ontology_terms_path, verbose) - \"Loads defined ontological terms from a JSON file.\"...\n2025-06-06 12:52:37,601 - __main__ - DEBUG -         Found method: validate_annotations(parsed_annotations, defined_terms, verbose) - \"Validates parsed GNN annotations against a set of defined ontological terms.\"...\n2025-06-06 12:52:37,601 - __main__ - DEBUG -         Found method: generate_ontology_report_for_file(gnn_file_path, parsed_annotations, validation_results) - \"Generates a markdown formatted report string for a single GNN file's ontology annotations.\"...\n2025-06-06 12:52:37,601 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): get_mcp_interface() - Docstring: Returns the MCP interface for the Ontology module.\n2025-06-06 12:52:37,601 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): parse_gnn_ontology_section(gnn_file_content, verbose) - Docstring: Parses the 'ActInfOntologyAnnotation' section from GNN file content.\n2025-06-06 12:52:37,601 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): load_defined_ontology_terms(ontology_terms_path, verbose) - Docstring: Loads defined ontological terms from a JSON file.\n2025-06-06 12:52:37,601 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): validate_annotations(parsed_annotations, defined_terms, verbose) - Docstring: Validates parsed GNN annotations against a set of defined ontological terms.\n2025-06-06 12:52:37,601 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): generate_ontology_report_for_file(gnn_file_path, parsed_annotations, validation_results) - Docstring: Generates a markdown formatted report string for a single GNN file's ontology annotations.\n2025-06-06 12:52:37,601 - __main__ - DEBUG -       Processing module: setup\n2025-06-06 12:52:37,601 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/setup/mcp.py (4257 bytes)\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found registered MCP tool: ensure_directory_exists(directory_path) - Description: Ensures a directory exists, creating it if necessary. Returns the absolute path.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found registered MCP tool: find_project_gnn_files(search_directory, recursive) - Description: Finds all GNN (.md) files in a specified directory within the project.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found registered MCP tool: get_standard_output_paths(base_output_directory) - Description: Gets a dictionary of standard output directory paths (e.g., for type_check, visualization), creating them if needed.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/setup/mcp.py\n2025-06-06 12:52:37,602 - __main__ - DEBUG -         Found method: ensure_directory_exists_mcp(directory_path) - \"Ensure a directory exists, creating it if necessary. Exposed via MCP.\"...\n2025-06-06 12:52:37,602 - __main__ - DEBUG -         Found method: find_project_gnn_files_mcp(search_directory, recursive) - \"Find all GNN (.md) files in a directory. Exposed via MCP.\"...\n2025-06-06 12:52:37,602 - __main__ - DEBUG -         Found method: get_standard_output_paths_mcp(base_output_directory) - \"Get standard output paths for the pipeline. Exposed via MCP.\"...\n2025-06-06 12:52:37,602 - __main__ - DEBUG -         Found method: register_tools(mcp_instance) - \"Register setup utility tools with the MCP.\"...\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): ensure_directory_exists_mcp(directory_path) - Docstring: Ensure a directory exists, creating it if necessary. Exposed via MCP.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): find_project_gnn_files_mcp(search_directory, recursive) - Docstring: Find all GNN (.md) files in a directory. Exposed via MCP.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): get_standard_output_paths_mcp(base_output_directory) - Docstring: Get standard output paths for the pipeline. Exposed via MCP.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp_instance) - Docstring: Register setup utility tools with the MCP.\n2025-06-06 12:52:37,602 - __main__ - DEBUG -       Processing module: tests\n2025-06-06 12:52:37,602 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/tests/mcp.py (7083 bytes)\n2025-06-06 12:52:37,603 - __main__ - DEBUG -           Found registered MCP tool: run_gnn_type_checker(file_path) - Description: Run the GNN type checker on a specific file (via test module).\n2025-06-06 12:52:37,603 - __main__ - DEBUG -           Found registered MCP tool: run_gnn_type_checker_on_directory(dir_path, report_file) - Description: Run the GNN type checker on all GNN files in a directory (via test module).\n2025-06-06 12:52:37,603 - __main__ - DEBUG -           Found registered MCP tool: run_gnn_unit_tests() - Description: Run the GNN unit tests and return results.\n2025-06-06 12:52:37,603 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/tests/mcp.py\n2025-06-06 12:52:37,604 - __main__ - DEBUG -         Found method: run_type_checker_on_file(file_path) - \"Run the GNN type checker on a file.\"...\n2025-06-06 12:52:37,604 - __main__ - DEBUG -         Found method: run_type_checker_on_directory(dir_path, report_file) - \"Run the GNN type checker on a directory of files.\"...\n2025-06-06 12:52:37,604 - __main__ - DEBUG -         Found method: run_unit_tests() - \"Run the GNN unit tests.\"...\n2025-06-06 12:52:37,604 - __main__ - DEBUG -         Found method: get_test_report(uri) - \"Retrieve a test report by URI.\"...\n2025-06-06 12:52:37,604 - __main__ - DEBUG -         Found method: register_tools(mcp) - \"Register test tools with the MCP.\"...\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): run_type_checker_on_file(file_path) - Docstring: Run the GNN type checker on a file.\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): run_type_checker_on_directory(dir_path, report_file) - Docstring: Run the GNN type checker on a directory of files.\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): run_unit_tests() - Docstring: Run the GNN unit tests.\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): get_test_report(uri) - Docstring: Retrieve a test report by URI.\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp) - Docstring: Register test tools with the MCP.\n2025-06-06 12:52:37,604 - __main__ - DEBUG -       Processing module: visualization\n2025-06-06 12:52:37,604 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/visualization/mcp.py (5934 bytes)\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found registered MCP tool: visualize_gnn_file(file_path, output_dir) - Description: Generate visualizations for a specific GNN file.\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found registered MCP tool: visualize_gnn_directory(dir_path, output_dir) - Description: Visualize all GNN files in a directory\n2025-06-06 12:52:37,604 - __main__ - DEBUG -           Found registered MCP tool: parse_gnn_file(file_path) - Description: Parse a GNN file without visualization\n2025-06-06 12:52:37,604 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/visualization/mcp.py\n2025-06-06 12:52:37,605 - __main__ - DEBUG -         Found method: visualize_file(file_path, output_dir) - \"Visualize a GNN file through MCP.\"...\n2025-06-06 12:52:37,605 - __main__ - DEBUG -         Found method: visualize_directory(dir_path, output_dir) - \"Visualize all GNN files in a directory through MCP.\"...\n2025-06-06 12:52:37,605 - __main__ - DEBUG -         Found method: parse_gnn_file(file_path) - \"Parse a GNN file without visualization through MCP.\"...\n2025-06-06 12:52:37,605 - __main__ - DEBUG -         Found method: get_visualization_results(uri) - \"Retrieve visualization results by URI.\"...\n2025-06-06 12:52:37,605 - __main__ - DEBUG -         Found method: register_tools(mcp) - \"Register visualization tools with the MCP.\"...\n2025-06-06 12:52:37,605 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): visualize_file(file_path, output_dir) - Docstring: Visualize a GNN file through MCP.\n2025-06-06 12:52:37,605 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): visualize_directory(dir_path, output_dir) - Docstring: Visualize all GNN files in a directory through MCP.\n2025-06-06 12:52:37,605 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): get_visualization_results(uri) - Docstring: Retrieve visualization results by URI.\n2025-06-06 12:52:37,605 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp) - Docstring: Register visualization tools with the MCP.\n2025-06-06 12:52:37,605 - __main__ - DEBUG -       Processing module: llm\n2025-06-06 12:52:37,605 - __main__ - DEBUG -         \u2705 MCP integration file found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/llm/mcp.py (19238 bytes)\n2025-06-06 12:52:37,606 - __main__ - DEBUG -           Found registered MCP tool: llm.summarize_gnn_file(file_path_str, user_prompt_suffix) - Description: Reads a GNN specification file and uses an LLM to generate a concise summary of its content. Optionally, a user prompt suffix can refine the summary focus.\n2025-06-06 12:52:37,606 - __main__ - DEBUG -           Found registered MCP tool: llm.explain_gnn_file(file_path_str, aspect_to_explain) - Description: Reads a GNN specification file and uses an LLM to generate an explanation of its content. Can focus on a specific aspect if provided.\n2025-06-06 12:52:37,606 - __main__ - DEBUG -           Found registered MCP tool: llm.generate_professional_summary(file_path_str, experiment_details, target_audience) - Description: Reads a GNN file and optional experiment details, then uses an LLM to generate a professional summary suitable for reports or papers.\n2025-06-06 12:52:37,606 - __main__ - DEBUG -       \ud83d\udc0d Parsing for MCP methods in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/llm/mcp.py\n2025-06-06 12:52:37,608 - __main__ - DEBUG -         Found method: initialize_llm_module(mcp_instance_ref) - \"Initializes the LLM module, loads API key, and updates MCP status.\"...\n2025-06-06 12:52:37,608 - __main__ - DEBUG -         Found method: summarize_gnn_file_content(file_path_str, user_prompt_suffix) - \"Reads a GNN file, sends its content to an LLM, and returns a summary.\"...\n2025-06-06 12:52:37,608 - __main__ - DEBUG -         Found method: explain_gnn_file_content(file_path_str, aspect_to_explain) - \"Reads a GNN file, sends its content to an LLM, and returns an explanation.\"...\n2025-06-06 12:52:37,608 - __main__ - DEBUG -         Found method: generate_professional_summary_from_gnn(file_path_str, experiment_details, target_audience) - \"Generates a professional summary of a GNN model and its experimental context.\"...\n2025-06-06 12:52:37,608 - __main__ - DEBUG -         Found method: register_tools(mcp_instance_ref) - \"\"...\n2025-06-06 12:52:37,608 - __main__ - DEBUG -         Found method: ensure_llm_tools_registered(mcp_instance_ref) - \"Ensures that LLM tools are registered with the provided MCP instance.\"...\n2025-06-06 12:52:37,608 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): initialize_llm_module(mcp_instance_ref) - Docstring: Initializes the LLM module, loads API key, and updates MCP status.\n2025-06-06 12:52:37,608 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): summarize_gnn_file_content(file_path_str, user_prompt_suffix) - Docstring: Reads a GNN file, sends its content to an LLM, and returns a summary.\n2025-06-06 12:52:37,608 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): explain_gnn_file_content(file_path_str, aspect_to_explain) - Docstring: Reads a GNN file, sends its content to an LLM, and returns an explanation.\n2025-06-06 12:52:37,608 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): generate_professional_summary_from_gnn(file_path_str, experiment_details, target_audience) - Docstring: Generates a professional summary of a GNN model and its experimental context.\n2025-06-06 12:52:37,608 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): register_tools(mcp_instance_ref) - Docstring:\n2025-06-06 12:52:37,608 - __main__ - DEBUG -           Found AST method (not a direct MCP tool or already listed): ensure_llm_tools_registered(mcp_instance_ref) - Docstring: Ensures that LLM tools are registered with the provided MCP instance.\n2025-06-06 12:52:37,608 - __main__ - DEBUG -   \u2705 MCP integration and API report saved: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/mcp_processing_step/7_mcp_integration_report.md (41841 bytes)\n2025-06-06 12:52:37,608 - __main__ - INFO - \u2705 Step 7: MCP Operations (7_mcp.py) - COMPLETED (Report generated; check report for details on findings)",
      "stderr": "2025-06-06 12:52:37,333 - root - WARNING - Could not directly import MCPTool from src.mcp. This might be okay if loaded by the main MCP system.\n2025-06-06 12:52:37,344 - src.render.mcp - INFO - Render module MCP tools registered.\n2025-06-06 12:52:37,589 - src.llm.mcp - INFO - Successfully imported MCPTool and MCPSDKNotFoundError from src.mcp.mcp in initialize_llm_module.\n2025-06-06 12:52:37,589 - llm.llm_operations - INFO - OpenAI API key loaded successfully.\n2025-06-06 12:52:37,589 - src.llm.mcp - INFO - LLM API Key loaded successfully.\n2025-06-06 12:52:37,589 - src.llm.mcp - INFO - Registered MCP tool: llm.summarize_gnn_file\n2025-06-06 12:52:37,589 - src.llm.mcp - INFO - Registered MCP tool: llm.explain_gnn_file\n2025-06-06 12:52:37,589 - src.llm.mcp - INFO - Registered MCP tool: llm.generate_professional_summary\n2025-06-06 12:52:37,589 - src.llm.mcp - INFO - LLM module MCP tools registration process completed.\n2025-06-06 12:52:37,590 - src.mcp.sympy_mcp - INFO - Successfully registered SymPy MCP tools\n2025-06-06 12:52:37,590 - mcp - INFO - Successfully registered SymPy MCP tools\n2025-06-06 12:52:37,590 - mcp - INFO - MCP system initialized using project's internal MCP components. SDK Status: Using project's internal MCP implementation.\n2025-06-06 12:52:37,590 - mcp - ERROR - Failed to load MCP module src.site.mcp: cannot import name 'MCPSchema' from 'src.mcp.mcp' (/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp/mcp.py)\n2025-06-06 12:52:37,590 - src.tests.mcp - INFO - Tests module MCP tools and resources registered.\n2025-06-06 12:52:37,590 - src.export.mcp - INFO - Export module MCP tools registration process completed.\n2025-06-06 12:52:37,590 - src.setup.mcp - INFO - Setup module MCP tools registered.\n2025-06-06 12:52:37,590 - src.gnn.mcp - INFO - GNN documentation module MCP tools and resources registered.\n2025-06-06 12:52:37,590 - src.visualization.mcp - INFO - Visualization module MCP tools and resources registered.\n2025-06-06 12:52:37,591 - src.render.mcp - INFO - Render module MCP tools registered.\n2025-06-06 12:52:37,591 - src.llm.mcp - INFO - Successfully imported MCPTool and MCPSDKNotFoundError from src.mcp.mcp in initialize_llm_module.\n2025-06-06 12:52:37,591 - llm.llm_operations - INFO - OpenAI API key loaded successfully.\n2025-06-06 12:52:37,591 - src.llm.mcp - INFO - LLM API Key loaded successfully.\n2025-06-06 12:52:37,591 - src.llm.mcp - INFO - Registered MCP tool: llm.summarize_gnn_file\n2025-06-06 12:52:37,591 - src.llm.mcp - INFO - Registered MCP tool: llm.explain_gnn_file\n2025-06-06 12:52:37,591 - src.llm.mcp - INFO - Registered MCP tool: llm.generate_professional_summary\n2025-06-06 12:52:37,591 - src.llm.mcp - INFO - LLM module MCP tools registration process completed.\n2025-06-06 12:52:37,591 - src.mcp.sympy_mcp - INFO - Successfully registered SymPy MCP tools\n2025-06-06 12:52:37,591 - mcp - INFO - Successfully registered SymPy MCP tools\n2025-06-06 12:52:37,591 - mcp - INFO - MCP system initialized using project's internal MCP components. SDK Status: Using project's internal MCP implementation.\n2025-06-06 12:52:37,593 - mcp - DEBUG - MCP modules already discovered. Skipping redundant discovery.\n2025-06-06 12:52:37,593 - mcp - INFO - MCP system initialized using project's internal MCP components. SDK Status: Using project's internal MCP implementation."
    },
    {
      "step_number": 8,
      "script_name": "8_ontology.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:38.003174",
      "end_time": "2025-06-06T12:52:38.058258",
      "duration_seconds": 0.055084,
      "details": "",
      "stdout": "2025-06-06 12:52:38,047 - __main__ - INFO - \u25b6\ufe0f Starting Step 8: Ontology Operations (8_ontology.py)\n2025-06-06 12:52:38,047 - __main__ - DEBUG -   Parsed options (from main.py or standalone):\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     Target GNN files directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     Output directory for report: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     Recursive: False\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     Ontology terms definition file: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology/act_inf_ontology_terms.json\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     Verbose flag from args: True\n2025-06-06 12:52:38,047 - __main__ - INFO -   \ud83d\udd0e Processing ontology related tasks...\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \ud83c\udfaf Target GNN files in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \u0565\u056c Output directory for ontology report: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \ud83d\udd04 Recursive mode: Disabled\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \ud83d\udcd6 Using ontology terms definition from: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology/act_inf_ontology_terms.json\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \ud83e\udde0 Conceptual Note: Ontologies provide a formal way to represent knowledge.\n2025-06-06 12:52:38,047 - __main__ - DEBUG -       - Informal ontologies (like folksonomies or taxonomies) help organize concepts.\n2025-06-06 12:52:38,047 - __main__ - DEBUG -       - Formal ontologies (e.g., in OWL, RDF) allow for logical reasoning and consistency checks.\n2025-06-06 12:52:38,047 - __main__ - DEBUG -       - This script focuses on extracting and validating terms based on a predefined JSON schema.\n2025-06-06 12:52:38,047 - __main__ - DEBUG -       - Different ontology languages (OWL, RDF, SKOS) offer varying expressiveness.\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \u270d\ufe0f Ontology report will be saved in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/ontology_processing\n2025-06-06 12:52:38,047 - __main__ - DEBUG -     \ud83e\uddd0 Loading defined ontology terms from: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology/act_inf_ontology_terms.json\n2025-06-06 12:52:38,048 - __main__ - DEBUG -       \ud83d\udcda Loaded 48 ontology terms successfully.\n2025-06-06 12:52:38,048 - __main__ - DEBUG -     \ud83d\udcca Found 2 GNN (.md) files to process.\n2025-06-06 12:52:38,048 - __main__ - DEBUG -     \ud83d\udcc4 Processing file: pymdp_pomdp_agent.md (6387 bytes)\n2025-06-06 12:52:38,048 - __main__ - DEBUG -       Found 20 ontology annotations in pymdp_pomdp_agent.md.\n2025-06-06 12:52:38,048 - __main__ - DEBUG -         Validated for pymdp_pomdp_agent.md: 20 passed, 0 failed.\n2025-06-06 12:52:38,048 - __main__ - DEBUG -     \ud83d\udcc4 Processing file: rxinfer_multiagent_gnn.md (9002 bytes)\n2025-06-06 12:52:38,048 - __main__ - DEBUG -       Found 12 ontology annotations in rxinfer_multiagent_gnn.md.\n2025-06-06 12:52:38,049 - __main__ - DEBUG -         Validated for rxinfer_multiagent_gnn.md: 0 passed, 12 failed.\n2025-06-06 12:52:38,049 - __main__ - DEBUG -   \u2705 Ontology processing report saved: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/ontology_processing/ontology_processing_report.md (2204 bytes)\n2025-06-06 12:52:38,049 - __main__ - WARNING - \u26a0\ufe0f Step 8: Ontology validation completed with 12 failed term(s). Check '/home/trim/Documents/GitHub/GeneralizedNotationNotation/output/ontology_processing/ontology_processing_report.md' for details.",
      "stderr": ""
    },
    {
      "step_number": 9,
      "script_name": "9_render.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:38.058304",
      "end_time": "2025-06-06T12:52:39.415192",
      "duration_seconds": 1.356888,
      "details": "",
      "stdout": "2025-06-06 12:52:39,147 - __main__ - INFO - Successfully imported render module.\n2025-06-06 12:52:39,147 - __main__ - INFO - Executing render step with arguments from main pipeline: Namespace(target_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'), output_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/output'), recursive=False, verbose=True, target_format=None)\n2025-06-06 12:52:39,147 - __main__ - INFO - Render step will target GNN specifications from: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports\n2025-06-06 12:52:39,147 - __main__ - INFO - Rendering to all supported formats: pymdp, rxinfer, rxinfer_toml\n2025-06-06 12:52:39,147 - __main__ - INFO - Searching for GNN specification files (*.json) in /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports (recursive: False)\n2025-06-06 12:52:39,147 - __main__ - WARNING - No GNN specification files (*.json) found in /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_exports.",
      "stderr": ""
    },
    {
      "step_number": 10,
      "script_name": "10_execute.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:52:39.415297",
      "end_time": "2025-06-06T12:52:39.557840",
      "duration_seconds": 0.142543,
      "details": "",
      "stdout": "2025-06-06 12:52:39,455 - __main__ - DEBUG - Verbose logging extended to 'execute.pymdp_runner' module.\n2025-06-06 12:52:39,455 - __main__ - DEBUG - Verbose logging extended to 'execute.rxinfer_runner' module.\n2025-06-06 12:52:39,455 - __main__ - INFO - \u25b6\ufe0f Starting Step 10: Execute Rendered Simulators (10_execute.py)\n2025-06-06 12:52:39,455 - __main__ - DEBUG -   Pipeline arguments received: Namespace(output_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/output'), recursive=True, verbose=True, pymdp_only=False, rxinfer_only=False, target_dir=PosixPath('/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples'))\n2025-06-06 12:52:39,456 - __main__ - INFO -   Executing PyMDP rendered scripts...\n2025-06-06 12:52:39,456 - __main__ - INFO -   \u2705 PyMDP scripts executed successfully or no scripts were found to run.\n2025-06-06 12:52:39,456 - __main__ - INFO -   Executing RxInfer.jl rendered scripts...\n2025-06-06 12:52:39,476 - __main__ - INFO -   \u2705 RxInfer.jl scripts executed successfully or no scripts were found to run.\n2025-06-06 12:52:39,476 - __main__ - INFO - \u2705 Step 10: Execute Rendered Simulators (10_execute.py) - COMPLETED",
      "stderr": "Directory not found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_rendered_simulators/pymdp\nDirectory not found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_rendered_simulators/rxinfer"
    },
    {
      "step_number": 11,
      "script_name": "11_llm.py",
      "status": "FAILED_TIMEOUT",
      "start_time": "2025-06-06T12:52:39.557911",
      "end_time": "2025-06-06T12:53:41.624561",
      "duration_seconds": 62.06665,
      "details": "Process timed out after 62.1 seconds (limit: 60s)",
      "stdout": "",
      "stderr": ""
    },
    {
      "step_number": 12,
      "script_name": "12_discopy.py",
      "status": "FAILED_NONZERO_EXIT",
      "start_time": "2025-06-06T12:53:41.624790",
      "end_time": "2025-06-06T12:53:42.589402",
      "duration_seconds": 0.964612,
      "details": "Process exited with code 2",
      "stdout": "2025-06-06 12:53:42,387 - __main__ - INFO - Starting pipeline step: 12_discopy.py - GNN to DisCoPy Transformation\n2025-06-06 12:53:42,387 - __main__ - INFO - Reading GNN files from: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples\n2025-06-06 12:53:42,387 - __main__ - INFO - DisCoPy outputs will be saved in: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/discopy_gnn\n2025-06-06 12:53:42,388 - __main__ - INFO - Found 2 GNN files to process.\n2025-06-06 12:53:42,388 - __main__ - INFO - Processing GNN file for DisCoPy: pymdp_pomdp_agent.md\n2025-06-06 12:53:42,389 - __main__ - WARNING - No DisCoPy diagram could be generated for pymdp_pomdp_agent.md. Skipping visualization.\n2025-06-06 12:53:42,389 - __main__ - INFO - Processing GNN file for DisCoPy: rxinfer_multiagent_gnn.md\n2025-06-06 12:53:42,391 - __main__ - WARNING - No DisCoPy diagram could be generated for rxinfer_multiagent_gnn.md. Skipping visualization.\n2025-06-06 12:53:42,391 - __main__ - INFO - Finished processing 2 GNN files. 0 diagrams generated successfully.\n2025-06-06 12:53:42,391 - __main__ - WARNING - Some GNN files failed to produce DisCoPy diagrams.",
      "stderr": "Failed to import Ty, Word from discopy.monoidal: cannot import name 'Word' from 'discopy.monoidal' (/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/lib/python3.12/site-packages/discopy/monoidal.py). They remain placeholders.\nWARNING:2025-06-06 12:53:42,372:jax._src.xla_bridge:909: An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\nJAX_AVAILABLE is False. One or more critical components (DisCoPy tensor/matrix/monoidal, JAX core, DisCoPy backend) failed to load.\nCore DisCoPy components (Diagram, Box, Id, Dim, or Ty) are Placeholders. Cannot create tensor-based DisCoPy diagram. DisCoPy import likely failed.\nCould not create a DisCoPy diagram from GNN file: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md. Check Connections section.\nCore DisCoPy components (Diagram, Box, Id, Dim, or Ty) are Placeholders. Cannot create tensor-based DisCoPy diagram. DisCoPy import likely failed.\nCould not create a DisCoPy diagram from GNN file: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md. Check Connections section."
    },
    {
      "step_number": 13,
      "script_name": "13_discopy_jax_eval.py",
      "status": "FAILED_NONZERO_EXIT",
      "start_time": "2025-06-06T12:53:42.589475",
      "end_time": "2025-06-06T12:53:43.484183",
      "duration_seconds": 0.894708,
      "details": "Process exited with code 2",
      "stdout": "",
      "stderr": "Failed to import Ty, Word from discopy.monoidal: cannot import name 'Word' from 'discopy.monoidal' (/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/.venv/lib/python3.12/site-packages/discopy/monoidal.py). They remain placeholders.\nWARNING:2025-06-06 12:53:43,326:jax._src.xla_bridge:909: An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\nJAX_AVAILABLE is False. One or more critical components (DisCoPy tensor/matrix/monoidal, JAX core, DisCoPy backend) failed to load.\nusage: 13_discopy_jax_eval.py [-h]\n(--gnn-input-dir GNN_INPUT_DIR | --target-dir TARGET_DIR)\n--output-dir OUTPUT_DIR\n[--recursive | --no-recursive]\n[--jax-seed JAX_SEED] [--verbose | --no-verbose]\n13_discopy_jax_eval.py: error: unrecognized arguments: --discopy-jax-seed 0"
    },
    {
      "step_number": 15,
      "script_name": "15_site.py",
      "status": "SUCCESS",
      "start_time": "2025-06-06T12:53:43.484229",
      "end_time": "2025-06-06T12:53:43.662311",
      "duration_seconds": 0.178082,
      "details": "",
      "stdout": "2025-06-06 12:53:43,534 - __main__ - INFO - Starting pipeline step: 15_site.py - Generate HTML Summary Site\n2025-06-06 12:53:43,534 - __main__ - INFO - Reading from pipeline output directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:53:43,534 - __main__ - INFO - Generated site will be saved as: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_pipeline_summary_site.html\n2025-06-06 12:53:43,535 - __main__ - DEBUG - Calling generate_html_report with output_dir='/home/trim/Documents/GitHub/GeneralizedNotationNotation/output' and site_output_file='/home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_pipeline_summary_site.html'\n2025-06-06 12:53:43,535 - src.site.generator - INFO - Starting HTML report generation for directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output\n2025-06-06 12:53:43,535 - src.site.generator - INFO - Output HTML will be saved to: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_pipeline_summary_site.html\n2025-06-06 12:53:43,535 - src.site.generator - WARNING - Pipeline summary JSON not found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/pipeline_execution_summary.json\n2025-06-06 12:53:43,647 - src.site.generator - WARNING - PyMDP Execute Logs directory not found: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/pymdp_execute_logs\n2025-06-06 12:53:43,649 - src.site.generator - INFO - \u2705 HTML report generated successfully: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_pipeline_summary_site.html\n2025-06-06 12:53:43,649 - __main__ - INFO - HTML summary site generated successfully: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/gnn_pipeline_summary_site.html",
      "stderr": ""
    }
  ],
  "end_time": "2025-06-06T12:53:43.662324",
  "overall_status": "FAILED"
}
pipeline_execution_summary.json

GNN Discovery (Step 1)

GNN File Discovery Report

Processed 2 GNN file(s) from directory: src/gnn/examples Search pattern used: **/*.md

Overall Summary


Detailed File Analysis

File: src/gnn/examples/pymdp_pomdp_agent.md

Found Sections:


File: src/gnn/examples/rxinfer_multiagent_gnn.md

Found Sections:


Test Reports (Step 3)

GNN Type Checker (Step 4)

Type Check Report

GNN Type Checker Report

pymdp_pomdp_agent.md: ✅ VALID

Path: src/gnn/examples/pymdp_pomdp_agent.md

rxinfer_multiagent_gnn.md: ✅ VALID

Path: src/gnn/examples/rxinfer_multiagent_gnn.md

Checked 2 files, 2 valid, 0 invalid

Resource Estimates: resource_estimates

Images

Markdown Reports

resource_report.md

GNN Resource Estimation Report

Analyzed 2 files Average Memory Usage: 0.50 KB Average Inference Time: 218.62 units Average Storage: 5.29 KB

pymdp_pomdp_agent.md

Path: src/gnn/examples/pymdp_pomdp_agent.md Memory Estimate: 0.48 KB Inference Estimate: 154.07 units Storage Estimate: 3.83 KB

Model Info

  • variables_count: 21
  • edges_count: 2
  • time_spec: Dynamic
  • equation_count: 5

Complexity Metrics

  • state_space_complexity: 6.9658
  • graph_density: 0.0048
  • avg_in_degree: 1.0000
  • avg_out_degree: 1.0000
  • max_in_degree: 1.0000
  • max_out_degree: 1.0000
  • cyclic_complexity: 0.0000
  • temporal_complexity: 0.0000
  • equation_complexity: 8.7600
  • overall_complexity: 8.7413
  • variable_count: 21.0000
  • edge_count: 2.0000
  • total_state_space_dim: 124.0000
  • max_variable_dim: 27.0000

rxinfer_multiagent_gnn.md

Path: src/gnn/examples/rxinfer_multiagent_gnn.md Memory Estimate: 0.52 KB Inference Estimate: 283.16 units Storage Estimate: 6.76 KB

Model Info

  • variables_count: 60
  • edges_count: 1
  • time_spec: Dynamic
  • equation_count: 15

Complexity Metrics

  • state_space_complexity: 6.8202
  • graph_density: 0.0003
  • avg_in_degree: 1.0000
  • avg_out_degree: 1.0000
  • max_in_degree: 1.0000
  • max_out_degree: 1.0000
  • cyclic_complexity: 0.0000
  • temporal_complexity: 0.0000
  • equation_complexity: 3.2578
  • overall_complexity: 5.3649
  • variable_count: 60.0000
  • edge_count: 1.0000
  • total_state_space_dim: 112.0000
  • max_variable_dim: 16.0000

Metric Definitions

General Metrics

  • Memory Estimate (KB): Estimated RAM required to hold the model's variables and data structures in memory. Calculated based on variable dimensions and data types (e.g., float: 4 bytes, int: 4 bytes).
  • Inference Estimate (units): A relative, abstract measure of computational cost for a single inference pass. It is derived from factors like model type (Static, Dynamic, Hierarchical), the number and type of variables, the complexity of connections (edges), and the operations defined in equations. Higher values indicate a more computationally intensive model. These units are not tied to a specific hardware time (e.g., milliseconds) but allow for comparison between different GNN models.
  • Storage Estimate (KB): Estimated disk space required to store the model file. This includes the memory footprint of the data plus overhead for the GNN textual representation, metadata, comments, and equations.

Complexity Metrics (scores are generally relative; higher often means more complex)

  • state_space_complexity: Logarithmic measure of the total dimensionality of all variables (sum of the product of dimensions for each variable). Represents the model's theoretical information capacity or the size of its state space.
  • graph_density: Ratio of actual edges to the maximum possible edges in the model graph. A value of 0 indicates no connections, while 1 would mean a fully connected graph. Measures how interconnected the variables are.
  • avg_in_degree: Average number of incoming connections (edges) per variable.
  • avg_out_degree: Average number of outgoing connections (edges) per variable.
  • max_in_degree: Maximum number of incoming connections for any single variable in the model.
  • max_out_degree: Maximum number of outgoing connections for any single variable in the model.
  • cyclic_complexity: A score indicating the presence and extent of cyclic patterns or feedback loops in the graph. Approximated based on the ratio of edges to variables; higher values suggest more complex recurrent interactions.
  • temporal_complexity: Proportion of edges that involve time dependencies (e.g., connecting a variable at time t to one at t+1). Indicates the degree to which the model's behavior depends on past states or sequences.
  • equation_complexity: A measure based on the average length, number, and types of mathematical operators (e.g., +, *, log, softmax) used in the model's equations. Higher values suggest more intricate mathematical relationships between variables.
  • overall_complexity: A weighted composite score (typically scaled, e.g., 0-10) that combines state space size, graph structure (density, cyclicity), temporal aspects, and equation complexity to provide a single, holistic measure of the model's intricacy.

HTML Reports/Outputs

resource_report_detailed.html

View standalone: resource_report_detailed.html

JSON Files

resource_data.json

{
  "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md": {
    "file": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md",
    "model_name": "Multifactor PyMDP Agent v1",
    "memory_estimate": 0.484375,
    "inference_estimate": 154.06988264859797,
    "storage_estimate": 3.82846875,
    "flops_estimate": {
      "total_flops": 1050.0,
      "matrix_operations": 0,
      "element_operations": 0,
      "nonlinear_operations": 0
    },
    "inference_time_estimate": {
      "cpu_time_seconds": 2.1e-08,
      "cpu_time_ms": 2.1e-05,
      "cpu_time_us": 0.020999999999999998
    },
    "batched_inference_estimate": {
      "batch_1": {
        "flops": 1050.0,
        "time_seconds": 2.1e-08,
        "throughput_per_second": 47619047.61904762
      },
      "batch_8": {
        "flops": 6674.971489500035,
        "time_seconds": 1.334994297900007e-07,
        "throughput_per_second": 59925349.58826627
      },
      "batch_32": {
        "flops": 25518.25782075925,
        "time_seconds": 5.10365156415185e-07,
        "throughput_per_second": 62700205.13306323
      },
      "batch_128": {
        "flops": 99830.77636640746,
        "time_seconds": 1.9966155273281492e-06,
        "throughput_per_second": 64108486.710652955
      },
      "batch_512": {
        "flops": 394234.3967437306,
        "time_seconds": 7.884687934874611e-06,
        "throughput_per_second": 64935987.85760216
      }
    },
    "model_overhead": {
      "compilation_ms": 79,
      "optimization_ms": 240.5,
      "memory_overhead_kb": 2.572265625
    },
    "complexity": {
      "state_space_complexity": 6.965784284662087,
      "graph_density": 0.004761904761904762,
      "avg_in_degree": 1.0,
      "avg_out_degree": 1.0,
      "max_in_degree": 1,
      "max_out_degree": 1,
      "cyclic_complexity": 0,
      "temporal_complexity": 0.0,
      "equation_complexity": 8.76,
      "overall_complexity": 8.741273094711996,
      "variable_count": 21,
      "edge_count": 2,
      "total_state_space_dim": 124,
      "max_variable_dim": 27
    },
    "model_info": {
      "variables_count": 21,
      "edges_count": 2,
      "time_spec": "Dynamic",
      "equation_count": 5
    }
  },
  "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md": {
    "file": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md",
    "model_name": "Multi-agent Trajectory Planning",
    "memory_estimate": 0.5166015625,
    "inference_estimate": 283.1611446514433,
    "storage_estimate": 6.7573515625,
    "flops_estimate": {
      "total_flops": 20.0,
      "matrix_operations": 0,
      "element_operations": 8,
      "nonlinear_operations": 0
    },
    "inference_time_estimate": {
      "cpu_time_seconds": 4e-10,
      "cpu_time_ms": 4.0000000000000003e-07,
      "cpu_time_us": 0.0004
    },
    "batched_inference_estimate": {
      "batch_1": {
        "flops": 20.0,
        "time_seconds": 4e-10,
        "throughput_per_second": 2500000000.0
      },
      "batch_8": {
        "flops": 127.14231408571496,
        "time_seconds": 2.5428462817142993e-09,
        "throughput_per_second": 3146080853.383979
      },
      "batch_32": {
        "flops": 486.0620537287476,
        "time_seconds": 9.721241074574952e-09,
        "throughput_per_second": 3291760769.48582
      },
      "batch_128": {
        "flops": 1901.5385974553803,
        "time_seconds": 3.8030771949107605e-08,
        "throughput_per_second": 3365695552.30928
      },
      "batch_512": {
        "flops": 7509.226604642487,
        "time_seconds": 1.5018453209284973e-07,
        "throughput_per_second": 3409139362.5241137
      }
    },
    "model_overhead": {
      "compilation_ms": 206,
      "optimization_ms": 1820.0,
      "memory_overhead_kb": 5.423828125
    },
    "complexity": {
      "state_space_complexity": 6.820178962415188,
      "graph_density": 0.0002824858757062147,
      "avg_in_degree": 1.0,
      "avg_out_degree": 1.0,
      "max_in_degree": 1,
      "max_out_degree": 1,
      "cyclic_complexity": 0,
      "temporal_complexity": 0.0,
      "equation_complexity": 3.2577777777777777,
      "overall_complexity": 5.364897390812113,
      "variable_count": 60,
      "edge_count": 1,
      "total_state_space_dim": 112,
      "max_variable_dim": 16
    },
    "model_info": {
      "variables_count": 60,
      "edges_count": 1,
      "time_spec": "Dynamic",
      "equation_count": 15
    }
  }
}
resource_data.json

GNN Exports (Step 5)

Export Step Report

📤 GNN Export Step Summary

🗓️ Generated: 2025-06-06 12:57:22

⚙️ Configuration

📊 Export Statistics

Exports for pymdp_pomdp_agent: pymdp_pomdp_agent

JSON Files

pymdp_pomdp_agent.json

{
  "file_path": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md",
  "name": "Multifactor PyMDP Agent v1",
  "metadata": {
    "description": "This model represents a PyMDP agent with multiple observation modalities and hidden state factors.\n- Observation modalities: \"state_observation\" (3 outcomes), \"reward\" (3 outcomes), \"decision_proprioceptive\" (3 outcomes)\n- Hidden state factors: \"reward_level\" (2 states), \"decision_state\" (3 states)\n- Control: \"decision_state\" factor is controllable with 3 possible actions.\nThe parameterization is derived from a PyMDP Python script example."
  },
  "states": [
    {
      "id": "A_m0",
      "dimensions": "3,2,3,type=float",
      "original_id": "A_m0"
    },
    {
      "id": "A_m1",
      "dimensions": "3,2,3,type=float",
      "original_id": "A_m1"
    },
    {
      "id": "A_m2",
      "dimensions": "3,2,3,type=float",
      "original_id": "A_m2"
    },
    {
      "id": "B_f0",
      "dimensions": "2,2,1,type=float",
      "original_id": "B_f0"
    },
    {
      "id": "B_f1",
      "dimensions": "3,3,3,type=float",
      "original_id": "B_f1"
    },
    {
      "id": "C_m0",
      "dimensions": "3,type=float",
      "original_id": "C_m0"
    },
    {
      "id": "C_m1",
      "dimensions": "3,type=float",
      "original_id": "C_m1"
    },
    {
      "id": "C_m2",
      "dimensions": "3,type=float",
      "original_id": "C_m2"
    },
    {
      "id": "D_f0",
      "dimensions": "2,type=float",
      "original_id": "D_f0"
    },
    {
      "id": "D_f1",
      "dimensions": "3,type=float",
      "original_id": "D_f1"
    },
    {
      "id": "s_f0",
      "dimensions": "2,1,type=float",
      "original_id": "s_f0"
    },
    {
      "id": "s_f1",
      "dimensions": "3,1,type=float",
      "original_id": "s_f1"
    },
    {
      "id": "s_prime_f0",
      "dimensions": "2,1,type=float",
      "original_id": "s_prime_f0"
    },
    {
      "id": "s_prime_f1",
      "dimensions": "3,1,type=float",
      "original_id": "s_prime_f1"
    },
    {
      "id": "o_m0",
      "dimensions": "3,1,type=float",
      "original_id": "o_m0"
    },
    {
      "id": "o_m1",
      "dimensions": "3,1,type=float",
      "original_id": "o_m1"
    },
    {
      "id": "o_m2",
      "dimensions": "3,1,type=float",
      "original_id": "o_m2"
    },
    {
      "id": "u_f1",
      "dimensions": "1,type=int",
      "original_id": "u_f1"
    },
    {
      "id": "G",
      "dimensions": "1,type=float",
      "original_id": "G"
    },
    {
      "id": "t",
      "dimensions": "1,type=int",
      "original_id": "t"
    }
  ],
  "parameters": {},
  "initial_parameters": {},
  "observations": [],
  "transitions": [
    {
      "sources": [
        "D_f0",
        "D_f1"
      ],
      "operator": "-",
      "targets": [
        "s_f0",
        "s_f1"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "s_f0",
        "s_f1"
      ],
      "operator": "-",
      "targets": [
        "A_m0",
        "A_m1",
        "A_m2"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "A_m0",
        "A_m1",
        "A_m2"
      ],
      "operator": "-",
      "targets": [
        "o_m0",
        "o_m1",
        "o_m2"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "B_f0",
        "B_f1"
      ],
      "operator": "-",
      "targets": [
        "s_prime_f0",
        "s_prime_f1"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "C_m0",
        "C_m1",
        "C_m2"
      ],
      "operator": ">",
      "targets": [
        "G"
      ],
      "attributes": {}
    }
  ],
  "ontology_annotations": {
    "A_m0": "LikelihoodMatrixModality0",
    "A_m1": "LikelihoodMatrixModality1",
    "A_m2": "LikelihoodMatrixModality2",
    "B_f0": "TransitionMatrixFactor0",
    "B_f1": "TransitionMatrixFactor1",
    "C_m0": "LogPreferenceVectorModality0",
    "C_m1": "LogPreferenceVectorModality1",
    "C_m2": "LogPreferenceVectorModality2",
    "D_f0": "PriorOverHiddenStatesFactor0",
    "D_f1": "PriorOverHiddenStatesFactor1",
    "s_f0": "HiddenStateFactor0",
    "s_f1": "HiddenStateFactor1",
    "s_prime_f0": "NextHiddenStateFactor0",
    "s_prime_f1": "NextHiddenStateFactor1",
    "o_m0": "ObservationModality0",
    "o_m1": "ObservationModality1",
    "o_m2": "ObservationModality2",
    "\u03c0_f1": "PolicyVectorFactor1 # Distribution over actions for factor 1",
    "u_f1": "ActionFactor1       # Chosen action for factor 1",
    "G": "ExpectedFreeEnergy"
  },
  "equations_text": "",
  "time_info": {
    "DiscreteTime": "t",
    "ModelTimeHorizon": "Unbounded # Agent definition is generally unbounded, specific simulation runs have a horizon."
  },
  "footer_text": "",
  "signature": {},
  "raw_sections": {
    "GNNSection": "MultifactorPyMDPAgent",
    "GNNVersionAndFlags": "GNN v1",
    "ModelName": "Multifactor PyMDP Agent v1",
    "ModelAnnotation": "This model represents a PyMDP agent with multiple observation modalities and hidden state factors.\n- Observation modalities: \"state_observation\" (3 outcomes), \"reward\" (3 outcomes), \"decision_proprioceptive\" (3 outcomes)\n- Hidden state factors: \"reward_level\" (2 states), \"decision_state\" (3 states)\n- Control: \"decision_state\" factor is controllable with 3 possible actions.\nThe parameterization is derived from a PyMDP Python script example.",
    "StateSpaceBlock": "# A_matrices are defined per modality: A_m[observation_outcomes, state_factor0_states, state_factor1_states]\nA_m0[3,2,3,type=float]   # Likelihood for modality 0 (\"state_observation\")\nA_m1[3,2,3,type=float]   # Likelihood for modality 1 (\"reward\")\nA_m2[3,2,3,type=float]   # Likelihood for modality 2 (\"decision_proprioceptive\")\n\n# B_matrices are defined per hidden state factor: B_f[states_next, states_previous, actions]\nB_f0[2,2,1,type=float]   # Transitions for factor 0 (\"reward_level\"), 1 implicit action (uncontrolled)\nB_f1[3,3,3,type=float]   # Transitions for factor 1 (\"decision_state\"), 3 actions\n\n# C_vectors are defined per modality: C_m[observation_outcomes]\nC_m0[3,type=float]       # Preferences for modality 0\nC_m1[3,type=float]       # Preferences for modality 1\nC_m2[3,type=float]       # Preferences for modality 2\n\n# D_vectors are defined per hidden state factor: D_f[states]\nD_f0[2,type=float]       # Prior for factor 0\nD_f1[3,type=float]       # Prior for factor 1\n\n# Hidden States\ns_f0[2,1,type=float]     # Hidden state for factor 0 (\"reward_level\")\ns_f1[3,1,type=float]     # Hidden state for factor 1 (\"decision_state\")\ns_prime_f0[2,1,type=float] # Next hidden state for factor 0\ns_prime_f1[3,1,type=float] # Next hidden state for factor 1\n\n# Observations\no_m0[3,1,type=float]     # Observation for modality 0\no_m1[3,1,type=float]     # Observation for modality 1\no_m2[3,1,type=float]     # Observation for modality 2\n\n# Policy and Control\n\u03c0_f1[3,type=float]       # Policy (distribution over actions) for controllable factor 1\nu_f1[1,type=int]         # Action taken for controllable factor 1\nG[1,type=float]          # Expected Free Energy (overall, or can be per policy)\nt[1,type=int]            # Time step",
    "Connections": "(D_f0,D_f1)-(s_f0,s_f1)\n(s_f0,s_f1)-(A_m0,A_m1,A_m2)\n(A_m0,A_m1,A_m2)-(o_m0,o_m1,o_m2)\n(s_f0,s_f1,u_f1)-(B_f0,B_f1) # u_f1 primarily affects B_f1; B_f0 is uncontrolled\n(B_f0,B_f1)-(s_prime_f0,s_prime_f1)\n(C_m0,C_m1,C_m2)>G\nG>\u03c0_f1\n\u03c0_f1-u_f1\nG=ExpectedFreeEnergy\nt=Time",
    "InitialParameterization": "# A_m0: num_obs[0]=3, num_states[0]=2, num_states[1]=3. Format: A[obs_idx][state_f0_idx][state_f1_idx]\n# A[0][:, :, 0] = np.ones((3,2))/3\n# A[0][:, :, 1] = np.ones((3,2))/3\n# A[0][:, :, 2] = [[0.8,0.2],[0.0,0.0],[0.2,0.8]] (obs x state_f0 for state_f1=2)\nA_m0={\n  ( (0.33333,0.33333,0.8), (0.33333,0.33333,0.2) ),  # obs=0; (vals for s_f1 over s_f0=0), (vals for s_f1 over s_f0=1)\n  ( (0.33333,0.33333,0.0), (0.33333,0.33333,0.0) ),  # obs=1\n  ( (0.33333,0.33333,0.2), (0.33333,0.33333,0.8) )   # obs=2\n}\n\n# A_m1: num_obs[1]=3, num_states[0]=2, num_states[1]=3\n# A[1][2, :, 0] = [1.0,1.0]\n# A[1][0:2, :, 1] = softmax([[1,0],[0,1]]) approx [[0.731,0.269],[0.269,0.731]]\n# A[1][2, :, 2] = [1.0,1.0]\n# Others are 0.\nA_m1={\n  ( (0.0,0.731,0.0), (0.0,0.269,0.0) ),  # obs=0\n  ( (0.0,0.269,0.0), (0.0,0.731,0.0) ),  # obs=1\n  ( (1.0,0.0,1.0), (1.0,0.0,1.0) )      # obs=2\n}\n\n# A_m2: num_obs[2]=3, num_states[0]=2, num_states[1]=3\n# A[2][0,:,0]=1.0; A[2][1,:,1]=1.0; A[2][2,:,2]=1.0\n# Others are 0.\nA_m2={\n  ( (1.0,0.0,0.0), (1.0,0.0,0.0) ),  # obs=0\n  ( (0.0,1.0,0.0), (0.0,1.0,0.0) ),  # obs=1\n  ( (0.0,0.0,1.0), (0.0,0.0,1.0) )   # obs=2\n}\n\n# B_f0: factor 0 (2 states), uncontrolled (1 action). Format B[s_next, s_prev, action=0]\n# B_f0 = eye(2)\nB_f0={\n  ( (1.0),(0.0) ), # s_next=0; (vals for s_prev over action=0)\n  ( (0.0),(1.0) )  # s_next=1\n}\n\n# B_f1: factor 1 (3 states), 3 actions. Format B[s_next, s_prev, action_idx]\n# B_f1[:,:,action_idx] = eye(3) for each action\nB_f1={\n  ( (1.0,1.0,1.0), (0.0,0.0,0.0), (0.0,0.0,0.0) ), # s_next=0; (vals for actions over s_prev=0), (vals for actions over s_prev=1), ...\n  ( (0.0,0.0,0.0), (1.0,1.0,1.0), (0.0,0.0,0.0) ), # s_next=1\n  ( (0.0,0.0,0.0), (0.0,0.0,0.0), (1.0,1.0,1.0) )  # s_next=2\n}\n\n# C_m0: num_obs[0]=3. Defaults to zeros.\nC_m0={(0.0,0.0,0.0)}\n\n# C_m1: num_obs[1]=3. C[1][0]=1.0, C[1][1]=-2.0\nC_m1={(1.0,-2.0,0.0)}\n\n# C_m2: num_obs[2]=3. Defaults to zeros.\nC_m2={(0.0,0.0,0.0)}\n\n# D_f0: factor 0 (2 states). Uniform prior.\nD_f0={(0.5,0.5)}\n\n# D_f1: factor 1 (3 states). Uniform prior.\nD_f1={(0.33333,0.33333,0.33333)}",
    "InitialParameterization_raw_content": "# A_m0: num_obs[0]=3, num_states[0]=2, num_states[1]=3. Format: A[obs_idx][state_f0_idx][state_f1_idx]\n# A[0][:, :, 0] = np.ones((3,2))/3\n# A[0][:, :, 1] = np.ones((3,2))/3\n# A[0][:, :, 2] = [[0.8,0.2],[0.0,0.0],[0.2,0.8]] (obs x state_f0 for state_f1=2)\nA_m0={\n  ( (0.33333,0.33333,0.8), (0.33333,0.33333,0.2) ),  # obs=0; (vals for s_f1 over s_f0=0), (vals for s_f1 over s_f0=1)\n  ( (0.33333,0.33333,0.0), (0.33333,0.33333,0.0) ),  # obs=1\n  ( (0.33333,0.33333,0.2), (0.33333,0.33333,0.8) )   # obs=2\n}\n\n# A_m1: num_obs[1]=3, num_states[0]=2, num_states[1]=3\n# A[1][2, :, 0] = [1.0,1.0]\n# A[1][0:2, :, 1] = softmax([[1,0],[0,1]]) approx [[0.731,0.269],[0.269,0.731]]\n# A[1][2, :, 2] = [1.0,1.0]\n# Others are 0.\nA_m1={\n  ( (0.0,0.731,0.0), (0.0,0.269,0.0) ),  # obs=0\n  ( (0.0,0.269,0.0), (0.0,0.731,0.0) ),  # obs=1\n  ( (1.0,0.0,1.0), (1.0,0.0,1.0) )      # obs=2\n}\n\n# A_m2: num_obs[2]=3, num_states[0]=2, num_states[1]=3\n# A[2][0,:,0]=1.0; A[2][1,:,1]=1.0; A[2][2,:,2]=1.0\n# Others are 0.\nA_m2={\n  ( (1.0,0.0,0.0), (1.0,0.0,0.0) ),  # obs=0\n  ( (0.0,1.0,0.0), (0.0,1.0,0.0) ),  # obs=1\n  ( (0.0,0.0,1.0), (0.0,0.0,1.0) )   # obs=2\n}\n\n# B_f0: factor 0 (2 states), uncontrolled (1 action). Format B[s_next, s_prev, action=0]\n# B_f0 = eye(2)\nB_f0={\n  ( (1.0),(0.0) ), # s_next=0; (vals for s_prev over action=0)\n  ( (0.0),(1.0) )  # s_next=1\n}\n\n# B_f1: factor 1 (3 states), 3 actions. Format B[s_next, s_prev, action_idx]\n# B_f1[:,:,action_idx] = eye(3) for each action\nB_f1={\n  ( (1.0,1.0,1.0), (0.0,0.0,0.0), (0.0,0.0,0.0) ), # s_next=0; (vals for actions over s_prev=0), (vals for actions over s_prev=1), ...\n  ( (0.0,0.0,0.0), (1.0,1.0,1.0), (0.0,0.0,0.0) ), # s_next=1\n  ( (0.0,0.0,0.0), (0.0,0.0,0.0), (1.0,1.0,1.0) )  # s_next=2\n}\n\n# C_m0: num_obs[0]=3. Defaults to zeros.\nC_m0={(0.0,0.0,0.0)}\n\n# C_m1: num_obs[1]=3. C[1][0]=1.0, C[1][1]=-2.0\nC_m1={(1.0,-2.0,0.0)}\n\n# C_m2: num_obs[2]=3. Defaults to zeros.\nC_m2={(0.0,0.0,0.0)}\n\n# D_f0: factor 0 (2 states). Uniform prior.\nD_f0={(0.5,0.5)}\n\n# D_f1: factor 1 (3 states). Uniform prior.\nD_f1={(0.33333,0.33333,0.33333)}",
    "Equations": "# Standard PyMDP agent equations for state inference (infer_states),\n# policy inference (infer_policies), and action sampling (sample_action).\n# qs = infer_states(o)\n# q_pi, efe = infer_policies()\n# action = sample_action()",
    "Time": "Dynamic\nDiscreteTime=t\nModelTimeHorizon=Unbounded # Agent definition is generally unbounded, specific simulation runs have a horizon.",
    "ActInfOntologyAnnotation": "A_m0=LikelihoodMatrixModality0\nA_m1=LikelihoodMatrixModality1\nA_m2=LikelihoodMatrixModality2\nB_f0=TransitionMatrixFactor0\nB_f1=TransitionMatrixFactor1\nC_m0=LogPreferenceVectorModality0\nC_m1=LogPreferenceVectorModality1\nC_m2=LogPreferenceVectorModality2\nD_f0=PriorOverHiddenStatesFactor0\nD_f1=PriorOverHiddenStatesFactor1\ns_f0=HiddenStateFactor0\ns_f1=HiddenStateFactor1\ns_prime_f0=NextHiddenStateFactor0\ns_prime_f1=NextHiddenStateFactor1\no_m0=ObservationModality0\no_m1=ObservationModality1\no_m2=ObservationModality2\n\u03c0_f1=PolicyVectorFactor1 # Distribution over actions for factor 1\nu_f1=ActionFactor1       # Chosen action for factor 1\nG=ExpectedFreeEnergy",
    "ModelParameters": "num_hidden_states_factors: [2, 3]  # s_f0[2], s_f1[3]\nnum_obs_modalities: [3, 3, 3]     # o_m0[3], o_m1[3], o_m2[3]\nnum_control_factors: [1, 3]   # B_f0 actions_dim=1 (uncontrolled), B_f1 actions_dim=3 (controlled by pi_f1)",
    "Footer": "Multifactor PyMDP Agent v1 - GNN Representation",
    "Signature": "NA"
  },
  "other_sections": {},
  "gnnsection": {},
  "gnnversionandflags": {},
  "equations": "# Standard PyMDP agent equations for state inference (infer_states),\n# policy inference (infer_policies), and action sampling (sample_action).\n# qs = infer_states(o)\n# q_pi, efe = infer_policies()\n# action = sample_action()",
  "ModelParameters": {
    "num_hidden_states_factors": "[2, 3]",
    "num_obs_modalities": "[3, 3, 3]",
    "num_control_factors": "[1, 3]"
  },
  "num_hidden_states_factors": "[2, 3]",
  "num_obs_modalities": "[3, 3, 3]",
  "num_control_factors": "[1, 3]",
  "footer": "Multifactor PyMDP Agent v1 - GNN Representation"
}
pymdp_pomdp_agent.json

Text/Log Files

pymdp_pomdp_agent.txt

GNN Model Summary: Multifactor PyMDP Agent v1
Source File: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/pymdp_pomdp_agent.md

Metadata:
  description: This model represents a PyMDP agent with multiple observation modalities and hidden state factors.
- Observation modalities: "state_observation" (3 outcomes), "reward" (3 outcomes), "decision_proprioceptive" (3 outcomes)
- Hidden state factors: "reward_level" (2 states), "decision_state" (3 states)
- Control: "decision_state" factor is controllable with 3 possible actions.
The parameterization is derived from a PyMDP Python script example.

States (20):
  - ID: A_m0 (dimensions=3,2,3,type=float, original_id=A_m0)
  - ID: A_m1 (dimensions=3,2,3,type=float, original_id=A_m1)
  - ID: A_m2 (dimensions=3,2,3,type=float, original_id=A_m2)
  - ID: B_f0 (dimensions=2,2,1,type=float, original_id=B_f0)
  - ID: B_f1 (dimensions=3,3,3,type=float, original_id=B_f1)
  - ID: C_m0 (dimensions=3,type=float, original_id=C_m0)
  - ID: C_m1 (dimensions=3,type=float, original_id=C_m1)
  - ID: C_m2 (dimensions=3,type=float, original_id=C_m2)
  - ID: D_f0 (dimensions=2,type=float, original_id=D_f0)
  - ID: D_f1 (dimensions=3,type=float, original_id=D_f1)
  - ID: s_f0 (dimensions=2,1,type=float, original_id=s_f0)
  - ID: s_f1 (dimensions=3,1,type=float, original_id=s_f1)
  - ID: s_prime_f0 (dimensions=2,1,type=float, original_id=s_prime_f0)
  - ID: s_prime_f1 (dimensions=3,1,type=float, original_id=s_prime_f1)
  - ID: o_m0 (dimensions=3,1,type=float, original_id=o_m0)
  - ID: o_m1 (dimensions=3,1,type=float, original_id=o_m1)
  - ID: o_m2 (dimensions=3,1,type=float, original_id=o_m2)
  - ID: u_f1 (dimensions=1,type=int, original_id=u_f1)
  - ID: G (dimensions=1,type=float, original_id=G)
  - ID: t (dimensions=1,type=int, original_id=t)

Initial Parameters (0):

General Parameters (0):

Observations (0):

Transitions (5):
  - None -> None
  - None -> None
  - None -> None
  - None -> None
  - None -> None

Ontology Annotations (20):
  A_m0 = LikelihoodMatrixModality0
  A_m1 = LikelihoodMatrixModality1
  A_m2 = LikelihoodMatrixModality2
  B_f0 = TransitionMatrixFactor0
  B_f1 = TransitionMatrixFactor1
  C_m0 = LogPreferenceVectorModality0
  C_m1 = LogPreferenceVectorModality1
  C_m2 = LogPreferenceVectorModality2
  D_f0 = PriorOverHiddenStatesFactor0
  D_f1 = PriorOverHiddenStatesFactor1
  s_f0 = HiddenStateFactor0
  s_f1 = HiddenStateFactor1
  s_prime_f0 = NextHiddenStateFactor0
  s_prime_f1 = NextHiddenStateFactor1
  o_m0 = ObservationModality0
  o_m1 = ObservationModality1
  o_m2 = ObservationModality2
  π_f1 = PolicyVectorFactor1 # Distribution over actions for factor 1
  u_f1 = ActionFactor1       # Chosen action for factor 1
  G = ExpectedFreeEnergy

pymdp_pomdp_agent.txt

Other Files

Exports for rxinfer_multiagent_gnn: rxinfer_multiagent_gnn

JSON Files

rxinfer_multiagent_gnn.json

{
  "file_path": "/home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md",
  "name": "Multi-agent Trajectory Planning",
  "metadata": {
    "description": "This model represents a multi-agent trajectory planning scenario in RxInfer.jl.\nIt includes:\n- State space model for agents moving in a 2D environment\n- Obstacle avoidance constraints\n- Goal-directed behavior\n- Inter-agent collision avoidance\nThe model can be used to simulate trajectory planning in various environments with obstacles."
  },
  "states": [
    {
      "id": "dt",
      "dimensions": "1,type=float",
      "original_id": "dt"
    },
    {
      "id": "gamma",
      "dimensions": "1,type=float",
      "original_id": "gamma"
    },
    {
      "id": "nr_steps",
      "dimensions": "1,type=int",
      "original_id": "nr_steps"
    },
    {
      "id": "nr_iterations",
      "dimensions": "1,type=int",
      "original_id": "nr_iterations"
    },
    {
      "id": "nr_agents",
      "dimensions": "1,type=int",
      "original_id": "nr_agents"
    },
    {
      "id": "softmin_temperature",
      "dimensions": "1,type=float",
      "original_id": "softmin_temperature"
    },
    {
      "id": "intermediate_steps",
      "dimensions": "1,type=int",
      "original_id": "intermediate_steps"
    },
    {
      "id": "save_intermediates",
      "dimensions": "1,type=bool",
      "original_id": "save_intermediates"
    },
    {
      "id": "A",
      "dimensions": "4,4,type=float",
      "original_id": "A"
    },
    {
      "id": "B",
      "dimensions": "4,2,type=float",
      "original_id": "B"
    },
    {
      "id": "C",
      "dimensions": "2,4,type=float",
      "original_id": "C"
    },
    {
      "id": "initial_state_variance",
      "dimensions": "1,type=float",
      "original_id": "initial_state_variance"
    },
    {
      "id": "control_variance",
      "dimensions": "1,type=float",
      "original_id": "control_variance"
    },
    {
      "id": "goal_constraint_variance",
      "dimensions": "1,type=float",
      "original_id": "goal_constraint_variance"
    },
    {
      "id": "gamma_shape",
      "dimensions": "1,type=float",
      "original_id": "gamma_shape"
    },
    {
      "id": "gamma_scale_factor",
      "dimensions": "1,type=float",
      "original_id": "gamma_scale_factor"
    },
    {
      "id": "x_limits",
      "dimensions": "2,type=float",
      "original_id": "x_limits"
    },
    {
      "id": "y_limits",
      "dimensions": "2,type=float",
      "original_id": "y_limits"
    },
    {
      "id": "fps",
      "dimensions": "1,type=int",
      "original_id": "fps"
    },
    {
      "id": "heatmap_resolution",
      "dimensions": "1,type=int",
      "original_id": "heatmap_resolution"
    },
    {
      "id": "plot_width",
      "dimensions": "1,type=int",
      "original_id": "plot_width"
    },
    {
      "id": "plot_height",
      "dimensions": "1,type=int",
      "original_id": "plot_height"
    },
    {
      "id": "agent_alpha",
      "dimensions": "1,type=float",
      "original_id": "agent_alpha"
    },
    {
      "id": "target_alpha",
      "dimensions": "1,type=float",
      "original_id": "target_alpha"
    },
    {
      "id": "color_palette",
      "dimensions": "1,type=string",
      "original_id": "color_palette"
    },
    {
      "id": "door_obstacle_center_1",
      "dimensions": "2,type=float",
      "original_id": "door_obstacle_center_1"
    },
    {
      "id": "door_obstacle_size_1",
      "dimensions": "2,type=float",
      "original_id": "door_obstacle_size_1"
    },
    {
      "id": "door_obstacle_center_2",
      "dimensions": "2,type=float",
      "original_id": "door_obstacle_center_2"
    },
    {
      "id": "door_obstacle_size_2",
      "dimensions": "2,type=float",
      "original_id": "door_obstacle_size_2"
    },
    {
      "id": "wall_obstacle_center",
      "dimensions": "2,type=float",
      "original_id": "wall_obstacle_center"
    },
    {
      "id": "wall_obstacle_size",
      "dimensions": "2,type=float",
      "original_id": "wall_obstacle_size"
    },
    {
      "id": "combined_obstacle_center_1",
      "dimensions": "2,type=float",
      "original_id": "combined_obstacle_center_1"
    },
    {
      "id": "combined_obstacle_size_1",
      "dimensions": "2,type=float",
      "original_id": "combined_obstacle_size_1"
    },
    {
      "id": "combined_obstacle_center_2",
      "dimensions": "2,type=float",
      "original_id": "combined_obstacle_center_2"
    },
    {
      "id": "combined_obstacle_size_2",
      "dimensions": "2,type=float",
      "original_id": "combined_obstacle_size_2"
    },
    {
      "id": "combined_obstacle_center_3",
      "dimensions": "2,type=float",
      "original_id": "combined_obstacle_center_3"
    },
    {
      "id": "combined_obstacle_size_3",
      "dimensions": "2,type=float",
      "original_id": "combined_obstacle_size_3"
    },
    {
      "id": "agent1_id",
      "dimensions": "1,type=int",
      "original_id": "agent1_id"
    },
    {
      "id": "agent1_radius",
      "dimensions": "1,type=float",
      "original_id": "agent1_radius"
    },
    {
      "id": "agent1_initial_position",
      "dimensions": "2,type=float",
      "original_id": "agent1_initial_position"
    },
    {
      "id": "agent1_target_position",
      "dimensions": "2,type=float",
      "original_id": "agent1_target_position"
    },
    {
      "id": "agent2_id",
      "dimensions": "1,type=int",
      "original_id": "agent2_id"
    },
    {
      "id": "agent2_radius",
      "dimensions": "1,type=float",
      "original_id": "agent2_radius"
    },
    {
      "id": "agent2_initial_position",
      "dimensions": "2,type=float",
      "original_id": "agent2_initial_position"
    },
    {
      "id": "agent2_target_position",
      "dimensions": "2,type=float",
      "original_id": "agent2_target_position"
    },
    {
      "id": "agent3_id",
      "dimensions": "1,type=int",
      "original_id": "agent3_id"
    },
    {
      "id": "agent3_radius",
      "dimensions": "1,type=float",
      "original_id": "agent3_radius"
    },
    {
      "id": "agent3_initial_position",
      "dimensions": "2,type=float",
      "original_id": "agent3_initial_position"
    },
    {
      "id": "agent3_target_position",
      "dimensions": "2,type=float",
      "original_id": "agent3_target_position"
    },
    {
      "id": "agent4_id",
      "dimensions": "1,type=int",
      "original_id": "agent4_id"
    },
    {
      "id": "agent4_radius",
      "dimensions": "1,type=float",
      "original_id": "agent4_radius"
    },
    {
      "id": "agent4_initial_position",
      "dimensions": "2,type=float",
      "original_id": "agent4_initial_position"
    },
    {
      "id": "agent4_target_position",
      "dimensions": "2,type=float",
      "original_id": "agent4_target_position"
    },
    {
      "id": "experiment_seeds",
      "dimensions": "2,type=int",
      "original_id": "experiment_seeds"
    },
    {
      "id": "results_dir",
      "dimensions": "1,type=string",
      "original_id": "results_dir"
    },
    {
      "id": "animation_template",
      "dimensions": "1,type=string",
      "original_id": "animation_template"
    },
    {
      "id": "control_vis_filename",
      "dimensions": "1,type=string",
      "original_id": "control_vis_filename"
    },
    {
      "id": "obstacle_distance_filename",
      "dimensions": "1,type=string",
      "original_id": "obstacle_distance_filename"
    },
    {
      "id": "path_uncertainty_filename",
      "dimensions": "1,type=string",
      "original_id": "path_uncertainty_filename"
    },
    {
      "id": "convergence_filename",
      "dimensions": "1,type=string",
      "original_id": "convergence_filename"
    }
  ],
  "parameters": {},
  "initial_parameters": {},
  "observations": [],
  "transitions": [
    {
      "sources": [
        "dt"
      ],
      "operator": ">",
      "targets": [
        "A"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "A",
        "B",
        "C"
      ],
      "operator": ">",
      "targets": [
        "state_space_model"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "state_space_model",
        "initial_state_variance",
        "control_variance"
      ],
      "operator": ">",
      "targets": [
        "agent_trajectories"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "agent_trajectories",
        "goal_constraint_variance"
      ],
      "operator": ">",
      "targets": [
        "goal_directed_behavior"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "agent_trajectories",
        "gamma",
        "gamma_shape",
        "gamma_scale_factor"
      ],
      "operator": ">",
      "targets": [
        "obstacle_avoidance"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "agent_trajectories",
        "nr_agents"
      ],
      "operator": ">",
      "targets": [
        "collision_avoidance"
      ],
      "attributes": {}
    },
    {
      "sources": [
        "goal_directed_behavior",
        "obstacle_avoidance",
        "collision_avoidance"
      ],
      "operator": ">",
      "targets": [
        "planning_system"
      ],
      "attributes": {}
    }
  ],
  "ontology_annotations": {
    "dt": "TimeStep",
    "gamma": "ConstraintParameter",
    "nr_steps": "TrajectoryLength",
    "nr_iterations": "InferenceIterations",
    "nr_agents": "NumberOfAgents",
    "softmin_temperature": "SoftminTemperature",
    "A": "StateTransitionMatrix",
    "B": "ControlInputMatrix",
    "C": "ObservationMatrix",
    "initial_state_variance": "InitialStateVariance",
    "control_variance": "ControlVariance",
    "goal_constraint_variance": "GoalConstraintVariance"
  },
  "equations_text": "",
  "time_info": {
    "ModelTimeHorizon": "nr_steps"
  },
  "footer_text": "",
  "signature": {
    "Creator": "AI Assistant for GNN",
    "Date": "2024-07-27",
    "Status": "Example for RxInfer.jl multi-agent trajectory planning"
  },
  "raw_sections": {
    "GNNSection": "RxInferMultiAgentTrajectoryPlanning",
    "GNNVersionAndFlags": "GNN v1",
    "ModelName": "Multi-agent Trajectory Planning",
    "ModelAnnotation": "This model represents a multi-agent trajectory planning scenario in RxInfer.jl.\nIt includes:\n- State space model for agents moving in a 2D environment\n- Obstacle avoidance constraints\n- Goal-directed behavior\n- Inter-agent collision avoidance\nThe model can be used to simulate trajectory planning in various environments with obstacles.",
    "StateSpaceBlock": "# Model parameters\ndt[1,type=float]               # Time step for the state space model\ngamma[1,type=float]            # Constraint parameter for the Halfspace node\nnr_steps[1,type=int]           # Number of time steps in the trajectory\nnr_iterations[1,type=int]      # Number of inference iterations\nnr_agents[1,type=int]          # Number of agents in the simulation\nsoftmin_temperature[1,type=float] # Temperature parameter for the softmin function\nintermediate_steps[1,type=int] # Intermediate results saving interval\nsave_intermediates[1,type=bool] # Whether to save intermediate results\n\n# State space matrices\nA[4,4,type=float]              # State transition matrix\nB[4,2,type=float]              # Control input matrix\nC[2,4,type=float]              # Observation matrix\n\n# Prior distributions\ninitial_state_variance[1,type=float]    # Prior on initial state\ncontrol_variance[1,type=float]          # Prior on control inputs\ngoal_constraint_variance[1,type=float]  # Goal constraints variance\ngamma_shape[1,type=float]               # Parameters for GammaShapeRate prior\ngamma_scale_factor[1,type=float]        # Parameters for GammaShapeRate prior\n\n# Visualization parameters\nx_limits[2,type=float]            # Plot boundaries (x-axis)\ny_limits[2,type=float]            # Plot boundaries (y-axis)\nfps[1,type=int]                   # Animation frames per second\nheatmap_resolution[1,type=int]    # Heatmap resolution\nplot_width[1,type=int]            # Plot width\nplot_height[1,type=int]           # Plot height\nagent_alpha[1,type=float]         # Visualization alpha for agents\ntarget_alpha[1,type=float]        # Visualization alpha for targets\ncolor_palette[1,type=string]      # Color palette for visualization\n\n# Environment definitions\ndoor_obstacle_center_1[2,type=float]    # Door environment, obstacle 1 center\ndoor_obstacle_size_1[2,type=float]      # Door environment, obstacle 1 size\ndoor_obstacle_center_2[2,type=float]    # Door environment, obstacle 2 center\ndoor_obstacle_size_2[2,type=float]      # Door environment, obstacle 2 size\n\nwall_obstacle_center[2,type=float]      # Wall environment, obstacle center\nwall_obstacle_size[2,type=float]        # Wall environment, obstacle size\n\ncombined_obstacle_center_1[2,type=float] # Combined environment, obstacle 1 center\ncombined_obstacle_size_1[2,type=float]   # Combined environment, obstacle 1 size\ncombined_obstacle_center_2[2,type=float] # Combined environment, obstacle 2 center\ncombined_obstacle_size_2[2,type=float]   # Combined environment, obstacle 2 size\ncombined_obstacle_center_3[2,type=float] # Combined environment, obstacle 3 center\ncombined_obstacle_size_3[2,type=float]   # Combined environment, obstacle 3 size\n\n# Agent configurations\nagent1_id[1,type=int]                   # Agent 1 ID\nagent1_radius[1,type=float]             # Agent 1 radius\nagent1_initial_position[2,type=float]   # Agent 1 initial position\nagent1_target_position[2,type=float]    # Agent 1 target position\n\nagent2_id[1,type=int]                   # Agent 2 ID\nagent2_radius[1,type=float]             # Agent 2 radius\nagent2_initial_position[2,type=float]   # Agent 2 initial position\nagent2_target_position[2,type=float]    # Agent 2 target position\n\nagent3_id[1,type=int]                   # Agent 3 ID\nagent3_radius[1,type=float]             # Agent 3 radius\nagent3_initial_position[2,type=float]   # Agent 3 initial position\nagent3_target_position[2,type=float]    # Agent 3 target position\n\nagent4_id[1,type=int]                   # Agent 4 ID\nagent4_radius[1,type=float]             # Agent 4 radius\nagent4_initial_position[2,type=float]   # Agent 4 initial position\nagent4_target_position[2,type=float]    # Agent 4 target position\n\n# Experiment configurations\nexperiment_seeds[2,type=int]            # Random seeds for reproducibility\nresults_dir[1,type=string]              # Base directory for results\nanimation_template[1,type=string]       # Filename template for animations\ncontrol_vis_filename[1,type=string]     # Filename for control visualization\nobstacle_distance_filename[1,type=string] # Filename for obstacle distance plot\npath_uncertainty_filename[1,type=string]  # Filename for path uncertainty plot\nconvergence_filename[1,type=string]       # Filename for convergence plot",
    "Connections": "# Model parameters\ndt > A\n(A, B, C) > state_space_model\n\n# Agent trajectories\n(state_space_model, initial_state_variance, control_variance) > agent_trajectories\n\n# Goal constraints\n(agent_trajectories, goal_constraint_variance) > goal_directed_behavior\n\n# Obstacle avoidance\n(agent_trajectories, gamma, gamma_shape, gamma_scale_factor) > obstacle_avoidance\n\n# Collision avoidance\n(agent_trajectories, nr_agents) > collision_avoidance\n\n# Complete planning system\n(goal_directed_behavior, obstacle_avoidance, collision_avoidance) > planning_system",
    "InitialParameterization": "# Model parameters\ndt=1.0\ngamma=1.0\nnr_steps=40\nnr_iterations=350\nnr_agents=4\nsoftmin_temperature=10.0\nintermediate_steps=10\nsave_intermediates=false\n\n# State space matrices\n# A = [1 dt 0 0; 0 1 0 0; 0 0 1 dt; 0 0 0 1]\nA={(1.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.0, 1.0)}\n\n# B = [0 0; dt 0; 0 0; 0 dt]\nB={(0.0, 0.0), (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)}\n\n# C = [1 0 0 0; 0 0 1 0]\nC={(1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0)}\n\n# Prior distributions\ninitial_state_variance=100.0\ncontrol_variance=0.1\ngoal_constraint_variance=0.00001\ngamma_shape=1.5\ngamma_scale_factor=0.5\n\n# Visualization parameters\nx_limits={(-20, 20)}\ny_limits={(-20, 20)}\nfps=15\nheatmap_resolution=100\nplot_width=800\nplot_height=400\nagent_alpha=1.0\ntarget_alpha=0.2\ncolor_palette=\"tab10\"\n\n# Environment definitions\ndoor_obstacle_center_1={(-40.0, 0.0)}\ndoor_obstacle_size_1={(70.0, 5.0)}\ndoor_obstacle_center_2={(40.0, 0.0)}\ndoor_obstacle_size_2={(70.0, 5.0)}\n\nwall_obstacle_center={(0.0, 0.0)}\nwall_obstacle_size={(10.0, 5.0)}\n\ncombined_obstacle_center_1={(-50.0, 0.0)}\ncombined_obstacle_size_1={(70.0, 2.0)}\ncombined_obstacle_center_2={(50.0, 0.0)}\ncombined_obstacle_size_2={(70.0, 2.0)}\ncombined_obstacle_center_3={(5.0, -1.0)}\ncombined_obstacle_size_3={(3.0, 10.0)}\n\n# Agent configurations\nagent1_id=1\nagent1_radius=2.5\nagent1_initial_position={(-4.0, 10.0)}\nagent1_target_position={(-10.0, -10.0)}\n\nagent2_id=2\nagent2_radius=1.5\nagent2_initial_position={(-10.0, 5.0)}\nagent2_target_position={(10.0, -15.0)}\n\nagent3_id=3\nagent3_radius=1.0\nagent3_initial_position={(-15.0, -10.0)}\nagent3_target_position={(10.0, 10.0)}\n\nagent4_id=4\nagent4_radius=2.5\nagent4_initial_position={(0.0, -10.0)}\nagent4_target_position={(-10.0, 15.0)}\n\n# Experiment configurations\nexperiment_seeds={(42, 123)}\nresults_dir=\"results\"\nanimation_template=\"{environment}_{seed}.gif\"\ncontrol_vis_filename=\"control_signals.gif\"\nobstacle_distance_filename=\"obstacle_distance.png\"\npath_uncertainty_filename=\"path_uncertainty.png\"\nconvergence_filename=\"convergence.png\"",
    "InitialParameterization_raw_content": "# Model parameters\ndt=1.0\ngamma=1.0\nnr_steps=40\nnr_iterations=350\nnr_agents=4\nsoftmin_temperature=10.0\nintermediate_steps=10\nsave_intermediates=false\n\n# State space matrices\n# A = [1 dt 0 0; 0 1 0 0; 0 0 1 dt; 0 0 0 1]\nA={(1.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.0, 1.0)}\n\n# B = [0 0; dt 0; 0 0; 0 dt]\nB={(0.0, 0.0), (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)}\n\n# C = [1 0 0 0; 0 0 1 0]\nC={(1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0)}\n\n# Prior distributions\ninitial_state_variance=100.0\ncontrol_variance=0.1\ngoal_constraint_variance=0.00001\ngamma_shape=1.5\ngamma_scale_factor=0.5\n\n# Visualization parameters\nx_limits={(-20, 20)}\ny_limits={(-20, 20)}\nfps=15\nheatmap_resolution=100\nplot_width=800\nplot_height=400\nagent_alpha=1.0\ntarget_alpha=0.2\ncolor_palette=\"tab10\"\n\n# Environment definitions\ndoor_obstacle_center_1={(-40.0, 0.0)}\ndoor_obstacle_size_1={(70.0, 5.0)}\ndoor_obstacle_center_2={(40.0, 0.0)}\ndoor_obstacle_size_2={(70.0, 5.0)}\n\nwall_obstacle_center={(0.0, 0.0)}\nwall_obstacle_size={(10.0, 5.0)}\n\ncombined_obstacle_center_1={(-50.0, 0.0)}\ncombined_obstacle_size_1={(70.0, 2.0)}\ncombined_obstacle_center_2={(50.0, 0.0)}\ncombined_obstacle_size_2={(70.0, 2.0)}\ncombined_obstacle_center_3={(5.0, -1.0)}\ncombined_obstacle_size_3={(3.0, 10.0)}\n\n# Agent configurations\nagent1_id=1\nagent1_radius=2.5\nagent1_initial_position={(-4.0, 10.0)}\nagent1_target_position={(-10.0, -10.0)}\n\nagent2_id=2\nagent2_radius=1.5\nagent2_initial_position={(-10.0, 5.0)}\nagent2_target_position={(10.0, -15.0)}\n\nagent3_id=3\nagent3_radius=1.0\nagent3_initial_position={(-15.0, -10.0)}\nagent3_target_position={(10.0, 10.0)}\n\nagent4_id=4\nagent4_radius=2.5\nagent4_initial_position={(0.0, -10.0)}\nagent4_target_position={(-10.0, 15.0)}\n\n# Experiment configurations\nexperiment_seeds={(42, 123)}\nresults_dir=\"results\"\nanimation_template=\"{environment}_{seed}.gif\"\ncontrol_vis_filename=\"control_signals.gif\"\nobstacle_distance_filename=\"obstacle_distance.png\"\npath_uncertainty_filename=\"path_uncertainty.png\"\nconvergence_filename=\"convergence.png\"",
    "Equations": "# State space model:\n# x_{t+1} = A * x_t + B * u_t + w_t,  w_t ~ N(0, control_variance)\n# y_t = C * x_t + v_t,                v_t ~ N(0, observation_variance)\n#\n# Obstacle avoidance constraint:\n# p(x_t | obstacle) ~ N(d(x_t, obstacle), gamma)\n# where d(x_t, obstacle) is the distance from position x_t to the nearest obstacle\n#\n# Goal constraint:\n# p(x_T | goal) ~ N(goal, goal_constraint_variance)\n# where x_T is the final position\n#\n# Collision avoidance constraint:\n# p(x_i, x_j) ~ N(||x_i - x_j|| - (r_i + r_j), gamma)\n# where x_i, x_j are positions of agents i and j, r_i, r_j are their radii",
    "Time": "Dynamic\nDiscreteTime\nModelTimeHorizon=nr_steps",
    "ActInfOntologyAnnotation": "dt=TimeStep\ngamma=ConstraintParameter\nnr_steps=TrajectoryLength\nnr_iterations=InferenceIterations\nnr_agents=NumberOfAgents\nsoftmin_temperature=SoftminTemperature\nA=StateTransitionMatrix\nB=ControlInputMatrix\nC=ObservationMatrix\ninitial_state_variance=InitialStateVariance\ncontrol_variance=ControlVariance\ngoal_constraint_variance=GoalConstraintVariance",
    "ModelParameters": "nr_agents=4\nnr_steps=40\nnr_iterations=350",
    "Footer": "Multi-agent Trajectory Planning - GNN Representation for RxInfer.jl",
    "Signature": "Creator: AI Assistant for GNN\nDate: 2024-07-27\nStatus: Example for RxInfer.jl multi-agent trajectory planning"
  },
  "other_sections": {},
  "gnnsection": {},
  "gnnversionandflags": {},
  "equations": "# State space model:\n# x_{t+1} = A * x_t + B * u_t + w_t,  w_t ~ N(0, control_variance)\n# y_t = C * x_t + v_t,                v_t ~ N(0, observation_variance)\n#\n# Obstacle avoidance constraint:\n# p(x_t | obstacle) ~ N(d(x_t, obstacle), gamma)\n# where d(x_t, obstacle) is the distance from position x_t to the nearest obstacle\n#\n# Goal constraint:\n# p(x_T | goal) ~ N(goal, goal_constraint_variance)\n# where x_T is the final position\n#\n# Collision avoidance constraint:\n# p(x_i, x_j) ~ N(||x_i - x_j|| - (r_i + r_j), gamma)\n# where x_i, x_j are positions of agents i and j, r_i, r_j are their radii",
  "ModelParameters": {},
  "footer": "Multi-agent Trajectory Planning - GNN Representation for RxInfer.jl"
}
rxinfer_multiagent_gnn.json

Text/Log Files

rxinfer_multiagent_gnn.txt

GNN Model Summary: Multi-agent Trajectory Planning
Source File: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn/examples/rxinfer_multiagent_gnn.md

Metadata:
  description: This model represents a multi-agent trajectory planning scenario in RxInfer.jl.
It includes:
- State space model for agents moving in a 2D environment
- Obstacle avoidance constraints
- Goal-directed behavior
- Inter-agent collision avoidance
The model can be used to simulate trajectory planning in various environments with obstacles.

States (60):
  - ID: dt (dimensions=1,type=float, original_id=dt)
  - ID: gamma (dimensions=1,type=float, original_id=gamma)
  - ID: nr_steps (dimensions=1,type=int, original_id=nr_steps)
  - ID: nr_iterations (dimensions=1,type=int, original_id=nr_iterations)
  - ID: nr_agents (dimensions=1,type=int, original_id=nr_agents)
  - ID: softmin_temperature (dimensions=1,type=float, original_id=softmin_temperature)
  - ID: intermediate_steps (dimensions=1,type=int, original_id=intermediate_steps)
  - ID: save_intermediates (dimensions=1,type=bool, original_id=save_intermediates)
  - ID: A (dimensions=4,4,type=float, original_id=A)
  - ID: B (dimensions=4,2,type=float, original_id=B)
  - ID: C (dimensions=2,4,type=float, original_id=C)
  - ID: initial_state_variance (dimensions=1,type=float, original_id=initial_state_variance)
  - ID: control_variance (dimensions=1,type=float, original_id=control_variance)
  - ID: goal_constraint_variance (dimensions=1,type=float, original_id=goal_constraint_variance)
  - ID: gamma_shape (dimensions=1,type=float, original_id=gamma_shape)
  - ID: gamma_scale_factor (dimensions=1,type=float, original_id=gamma_scale_factor)
  - ID: x_limits (dimensions=2,type=float, original_id=x_limits)
  - ID: y_limits (dimensions=2,type=float, original_id=y_limits)
  - ID: fps (dimensions=1,type=int, original_id=fps)
  - ID: heatmap_resolution (dimensions=1,type=int, original_id=heatmap_resolution)
  - ID: plot_width (dimensions=1,type=int, original_id=plot_width)
  - ID: plot_height (dimensions=1,type=int, original_id=plot_height)
  - ID: agent_alpha (dimensions=1,type=float, original_id=agent_alpha)
  - ID: target_alpha (dimensions=1,type=float, original_id=target_alpha)
  - ID: color_palette (dimensions=1,type=string, original_id=color_palette)
  - ID: door_obstacle_center_1 (dimensions=2,type=float, original_id=door_obstacle_center_1)
  - ID: door_obstacle_size_1 (dimensions=2,type=float, original_id=door_obstacle_size_1)
  - ID: door_obstacle_center_2 (dimensions=2,type=float, original_id=door_obstacle_center_2)
  - ID: door_obstacle_size_2 (dimensions=2,type=float, original_id=door_obstacle_size_2)
  - ID: wall_obstacle_center (dimensions=2,type=float, original_id=wall_obstacle_center)
  - ID: wall_obstacle_size (dimensions=2,type=float, original_id=wall_obstacle_size)
  - ID: combined_obstacle_center_1 (dimensions=2,type=float, original_id=combined_obstacle_center_1)
  - ID: combined_obstacle_size_1 (dimensions=2,type=float, original_id=combined_obstacle_size_1)
  - ID: combined_obstacle_center_2 (dimensions=2,type=float, original_id=combined_obstacle_center_2)
  - ID: combined_obstacle_size_2 (dimensions=2,type=float, original_id=combined_obstacle_size_2)
  - ID: combined_obstacle_center_3 (dimensions=2,type=float, original_id=combined_obstacle_center_3)
  - ID: combined_obstacle_size_3 (dimensions=2,type=float, original_id=combined_obstacle_size_3)
  - ID: agent1_id (dimensions=1,type=int, original_id=agent1_id)
  - ID: agent1_radius (dimensions=1,type=float, original_id=agent1_radius)
  - ID: agent1_initial_position (dimensions=2,type=float, original_id=agent1_initial_position)
  - ID: agent1_target_position (dimensions=2,type=float, original_id=agent1_target_position)
  - ID: agent2_id (dimensions=1,type=int, original_id=agent2_id)
  - ID: agent2_radius (dimensions=1,type=float, original_id=agent2_radius)
  - ID: agent2_initial_position (dimensions=2,type=float, original_id=agent2_initial_position)
  - ID: agent2_target_position (dimensions=2,type=float, original_id=agent2_target_position)
  - ID: agent3_id (dimensions=1,type=int, original_id=agent3_id)
  - ID: agent3_radius (dimensions=1,type=float, original_id=agent3_radius)
  - ID: agent3_initial_position (dimensions=2,type=float, original_id=agent3_initial_position)
  - ID: agent3_target_position (dimensions=2,type=float, original_id=agent3_target_position)
  - ID: agent4_id (dimensions=1,type=int, original_id=agent4_id)
  - ID: agent4_radius (dimensions=1,type=float, original_id=agent4_radius)
  - ID: agent4_initial_position (dimensions=2,type=float, original_id=agent4_initial_position)
  - ID: agent4_target_position (dimensions=2,type=float, original_id=agent4_target_position)
  - ID: experiment_seeds (dimensions=2,type=int, original_id=experiment_seeds)
  - ID: results_dir (dimensions=1,type=string, original_id=results_dir)
  - ID: animation_template (dimensions=1,type=string, original_id=animation_template)
  - ID: control_vis_filename (dimensions=1,type=string, original_id=control_vis_filename)
  - ID: obstacle_distance_filename (dimensions=1,type=string, original_id=obstacle_distance_filename)
  - ID: path_uncertainty_filename (dimensions=1,type=string, original_id=path_uncertainty_filename)
  - ID: convergence_filename (dimensions=1,type=string, original_id=convergence_filename)

Initial Parameters (0):

General Parameters (0):

Observations (0):

Transitions (7):
  - None -> None
  - None -> None
  - None -> None
  - None -> None
  - None -> None
  - None -> None
  - None -> None

Ontology Annotations (12):
  dt = TimeStep
  gamma = ConstraintParameter
  nr_steps = TrajectoryLength
  nr_iterations = InferenceIterations
  nr_agents = NumberOfAgents
  softmin_temperature = SoftminTemperature
  A = StateTransitionMatrix
  B = ControlInputMatrix
  C = ObservationMatrix
  initial_state_variance = InitialStateVariance

... (file truncated, total lines: 103)
rxinfer_multiagent_gnn.txt

Other Files

GNN Processing Summary (Overall File List)

📊 GNN Processing Summary

🗓️ Generated: 2025-06-06 12:57:22

⚙️ Processing Configuration

📁 GNN Files Discovered

Found 2 GNN files for processing:

🔄 Pipeline Execution Status

Overall Status: 10/13 steps completed successfully

Total Execution Time: 88.80 seconds

Step-by-Step Results

Step Script Status Duration (s) Details
1 1_gnn.py ✅ SUCCESS 0.135
2 2_setup.py ✅ SUCCESS 2.811
4 4_gnn_type_checker.py ✅ SUCCESS 1.885
5 5_export.py ✅ SUCCESS 0.193
6 6_visualization.py ✅ SUCCESS 16.377
7 7_mcp.py ✅ SUCCESS 1.737
8 8_ontology.py ✅ SUCCESS 0.055
9 9_render.py ✅ SUCCESS 1.357
10 10_execute.py ✅ SUCCESS 0.143
11 11_llm.py ⚠️ FAILED_TIMEOUT 62.067 Process timed out after 62.1 seconds (limit: 60s)
12 12_discopy.py ⚠️ FAILED_NONZERO_EXIT 0.965 Process exited with code 2
13 13_discopy_jax_eval.py ⚠️ FAILED_NONZERO_EXIT 0.895 Process exited with code 2
15 15_site.py ✅ SUCCESS 0.178

📊 Output Summary

🔍 Key Findings

📋 Recommendations

General Improvements


Report generated by GNN Processing Pipeline Step 5 (Export)

GNN Visualizations (Step 6)

Visualizations for pymdp_pomdp_agent: pymdp_pomdp_agent

Images

Markdown Reports

file_content.md

GNN File: src/gnn/examples/pymdp_pomdp_agent.md\n\n## Raw File Content\n\n```\n# GNN Example: Multifactor PyMDP Agent

Format: Markdown representation of a Multifactor PyMDP model in Active Inference format

Version: 1.0

This file is machine-readable and attempts to represent a PyMDP agent with multiple observation modalities and hidden state factors.

GNNSection

MultifactorPyMDPAgent

GNNVersionAndFlags

GNN v1

ModelName

Multifactor PyMDP Agent v1

ModelAnnotation

This model represents a PyMDP agent with multiple observation modalities and hidden state factors. - Observation modalities: "state_observation" (3 outcomes), "reward" (3 outcomes), "decision_proprioceptive" (3 outcomes) - Hidden state factors: "reward_level" (2 states), "decision_state" (3 states) - Control: "decision_state" factor is controllable with 3 possible actions. The parameterization is derived from a PyMDP Python script example.

StateSpaceBlock

A_matrices are defined per modality: A_m[observation_outcomes, state_factor0_states, state_factor1_states]

A_m0[3,2,3,type=float] # Likelihood for modality 0 ("state_observation") A_m1[3,2,3,type=float] # Likelihood for modality 1 ("reward") A_m2[3,2,3,type=float] # Likelihood for modality 2 ("decision_proprioceptive")

B_matrices are defined per hidden state factor: B_f[states_next, states_previous, actions]

B_f0[2,2,1,type=float] # Transitions for factor 0 ("reward_level"), 1 implicit action (uncontrolled) B_f1[3,3,3,type=float] # Transitions for factor 1 ("decision_state"), 3 actions

C_vectors are defined per modality: C_m[observation_outcomes]

C_m0[3,type=float] # Preferences for modality 0 C_m1[3,type=float] # Preferences for modality 1 C_m2[3,type=float] # Preferences for modality 2

D_vectors are defined per hidden state factor: D_f[states]

D_f0[2,type=float] # Prior for factor 0 D_f1[3,type=float] # Prior for factor 1

Hidden States

s_f0[2,1,type=float] # Hidden state for factor 0 ("reward_level") s_f1[3,1,type=float] # Hidden state for factor 1 ("decision_state") s_prime_f0[2,1,type=float] # Next hidden state for factor 0 s_prime_f1[3,1,type=float] # Next hidden state for factor 1

Observations

o_m0[3,1,type=float] # Observation for modality 0 o_m1[3,1,type=float] # Observation for modality 1 o_m2[3,1,type=float] # Observation for modality 2

Policy and Control

π_f1[3,type=float] # Policy (distribution over actions) for controllable factor 1 u_f1[1,type=int] # Action taken for controllable factor 1 G[1,type=float] # Expected Free Energy (overall, or can be per policy) t[1,type=int] # Time step

Connections

(D_f0,D_f1)-(s_f0,s_f1) (s_f0,s_f1)-(A_m0,A_m1,A_m2) (A_m0,A_m1,A_m2)-(o_m0,o_m1,o_m2) (s_f0,s_f1,u_f1)-(B_f0,B_f1) # u_f1 primarily affects B_f1; B_f0 is uncontrolled (B_f0,B_f1)-(s_prime_f0,s_prime_f1) (C_m0,C_m1,C_m2)>G G>π_f1 π_f1-u_f1 G=ExpectedFreeEnergy t=Time

InitialParameterization

A_m0: num_obs[0]=3, num_states[0]=2, num_states[1]=3. Format: A[obs_idx][state_f0_idx][state_f1_idx]

A[0][:, :, 0] = np.ones((3,2))/3

A[0][:, :, 1] = np.ones((3,2))/3

A[0][:, :, 2] = [[0.8,0.2],[0.0,0.0],[0.2,0.8]] (obs x state_f0 for state_f1=2)

A_m0={ ( (0.33333,0.33333,0.8), (0.33333,0.33333,0.2) ), # obs=0; (vals for s_f1 over s_f0=0), (vals for s_f1 over s_f0=1) ( (0.33333,0.33333,0.0), (0.33333,0.33333,0.0) ), # obs=1 ( (0.33333,0.33333,0.2), (0.33333,0.33333,0.8) ) # obs=2 }

A_m1: num_obs[1]=3, num_states[0]=2, num_states[1]=3

A[1][2, :, 0] = [1.0,1.0]

A[1][0:2, :, 1] = softmax([[1,0],[0,1]]) approx [[0.731,0.269],[0.269,0.731]]

A[1][2, :, 2] = [1.0,1.0]

Others are 0.

A_m1={ ( (0.0,0.731,0.0), (0.0,0.269,0.0) ), # obs=0 ( (0.0,0.269,0.0), (0.0,0.731,0.0) ), # obs=1 ( (1.0,0.0,1.0), (1.0,0.0,1.0) ) # obs=2 }

A_m2: num_obs[2]=3, num_states[0]=2, num_states[1]=3

A[2][0,:,0]=1.0; A[2][1,:,1]=1.0; A[2][2,:,2]=1.0

Others are 0.

A_m2={ ( (1.0,0.0,0.0), (1.0,0.0,0.0) ), # obs=0 ( (0.0,1.0,0.0), (0.0,1.0,0.0) ), # obs=1 ( (0.0,0.0,1.0), (0.0,0.0,1.0) ) # obs=2 }

B_f0: factor 0 (2 states), uncontrolled (1 action). Format B[s_next, s_prev, action=0]

B_f0 = eye(2)

B_f0={ ( (1.0),(0.0) ), # s_next=0; (vals for s_prev over action=0) ( (0.0),(1.0) ) # s_next=1 }

B_f1: factor 1 (3 states), 3 actions. Format B[s_next, s_prev, action_idx]

B_f1[:,:,action_idx] = eye(3) for each action

B_f1={ ( (1.0,1.0,1.0), (0.0,0.0,0.0), (0.0,0.0,0.0) ), # s_next=0; (vals for actions over s_prev=0), (vals for actions over s_prev=1), ... ( (0.0,0.0,0.0), (1.0,1.0,1.0), (0.0,0.0,0.0) ), # s_next=1 ( (0.0,0.0,0.0), (0.0,0.0,0.0), (1.0,1.0,1.0) ) # s_next=2 }

C_m0: num_obs[0]=3. Defaults to zeros.

C_m0={(0.0,0.0,0.0)}

C_m1: num_obs[1]=3. C[1][0]=1.0, C[1][1]=-2.0

C_m1={(1.0,-2.0,0.0)}

C_m2: num_obs[2]=3. Defaults to zeros.

C_m2={(0.0,0.0,0.0)}

D_f0: factor 0 (2 states). Uniform prior.

D_f0={(0.5,0.5)}

D_f1: factor 1 (3 states). Uniform prior.

D_f1={(0.33333,0.33333,0.33333)}

Equations

Standard PyMDP agent equations for state inference (infer_states),

policy inference (infer_policies), and action sampling (sample_action).

qs = infer_states(o)

q_pi, efe = infer_policies()

action = sample_action()

Time

Dynamic DiscreteTime=t ModelTimeHorizon=Unbounded # Agent definition is generally unbounded, specific simulation runs have a horizon.

ActInfOntologyAnnotation

A_m0=LikelihoodMatrixModality0 A_m1=LikelihoodMatrixModality1 A_m2=LikelihoodMatrixModality2 B_f0=TransitionMatrixFactor0 B_f1=TransitionMatrixFactor1 C_m0=LogPreferenceVectorModality0 C_m1=LogPreferenceVectorModality1 C_m2=LogPreferenceVectorModality2 D_f0=PriorOverHiddenStatesFactor0 D_f1=PriorOverHiddenStatesFactor1 s_f0=HiddenStateFactor0 s_f1=HiddenStateFactor1 s_prime_f0=NextHiddenStateFactor0 s_prime_f1=NextHiddenStateFactor1 o_m0=ObservationModality0 o_m1=ObservationModality1 o_m2=ObservationModality2 π_f1=PolicyVectorFactor1 # Distribution over actions for factor 1 u_f1=ActionFactor1 # Chosen action for factor 1 G=ExpectedFreeEnergy

ModelParameters

num_hidden_states_factors: [2, 3] # s_f0[2], s_f1[3] num_obs_modalities: [3, 3, 3] # o_m0[3], o_m1[3], o_m2[3] num_control_factors: [1, 3] # B_f0 actions_dim=1 (uncontrolled), B_f1 actions_dim=3 (controlled by pi_f1)

Footer

Multifactor PyMDP Agent v1 - GNN Representation

Signature

NA \n```\n\n## Parsed Sections

_HeaderComments

# GNN Example: Multifactor PyMDP Agent
# Format: Markdown representation of a Multifactor PyMDP model in Active Inference format
# Version: 1.0
# This file is machine-readable and attempts to represent a PyMDP agent with multiple observation modalities and hidden state factors.

ModelName

Multifactor PyMDP Agent v1

GNNSection

MultifactorPyMDPAgent

GNNVersionAndFlags

GNN v1

ModelAnnotation

This model represents a PyMDP agent with multiple observation modalities and hidden state factors.
- Observation modalities: "state_observation" (3 outcomes), "reward" (3 outcomes), "decision_proprioceptive" (3 outcomes)
- Hidden state factors: "reward_level" (2 states), "decision_state" (3 states)
- Control: "decision_state" factor is controllable with 3 possible actions.
The parameterization is derived from a PyMDP Python script example.

StateSpaceBlock

# A_matrices are defined per modality: A_m[observation_outcomes, state_factor0_states, state_factor1_states]
A_m0[3,2,3,type=float]   # Likelihood for modality 0 ("state_observation")
A_m1[3,2,3,type=float]   # Likelihood for modality 1 ("reward")
A_m2[3,2,3,type=float]   # Likelihood for modality 2 ("decision_proprioceptive")

# B_matrices are defined per hidden state factor: B_f[states_next, states_previous, actions]
B_f0[2,2,1,type=float]   # Transitions for factor 0 ("reward_level"), 1 implicit action (uncontrolled)
B_f1[3,3,3,type=float]   # Transitions for factor 1 ("decision_state"), 3 actions

# C_vectors are defined per modality: C_m[observation_outcomes]
C_m0[3,type=float]       # Preferences for modality 0
C_m1[3,type=float]       # Preferences for modality 1
C_m2[3,type=float]       # Preferences for modality 2

# D_vectors are defined per hidden state factor: D_f[states]
D_f0[2,type=float]       # Prior for factor 0
D_f1[3,type=float]       # Prior for factor 1

# Hidden States
s_f0[2,1,type=float]     # Hidden state for factor 0 ("reward_level")
s_f1[3,1,type=float]     # Hidden state for factor 1 ("decision_state")
s_prime_f0[2,1,type=float] # Next hidden state for factor 0
s_prime_f1[3,1,type=float] # Next hidden state for factor 1

# Observations
o_m0[3,1,type=float]     # Observation for modality 0
o_m1[3,1,type=float]     # Observation for modality 1
o_m2[3,1,type=float]     # Observation for modality 2

# Policy and Control
π_f1[3,type=float]       # Policy (distribution over actions) for controllable factor 1
u_f1[1,type=int]         # Action taken for controllable factor 1
G[1,type=float]          # Expected Free Energy (overall, or can be per policy)
t[1,type=int]            # Time step

Connections

(D_f0,D_f1)-(s_f0,s_f1)
(s_f0,s_f1)-(A_m0,A_m1,A_m2)
(A_m0,A_m1,A_m2)-(o_m0,o_m1,o_m2)
(s_f0,s_f1,u_f1)-(B_f0,B_f1) # u_f1 primarily affects B_f1; B_f0 is uncontrolled
(B_f0,B_f1)-(s_prime_f0,s_prime_f1)
(C_m0,C_m1,C_m2)>G
G>π_f1
π_f1-u_f1
G=ExpectedFreeEnergy
t=Time

InitialParameterization

# A_m0: num_obs[0]=3, num_states[0]=2, num_states[1]=3. Format: A[obs_idx][state_f0_idx][state_f1_idx]
# A[0][:, :, 0] = np.ones((3,2))/3
# A[0][:, :, 1] = np.ones((3,2))/3
# A[0][:, :, 2] = [[0.8,0.2],[0.0,0.0],[0.2,0.8]] (obs x state_f0 for state_f1=2)
A_m0={
  ( (0.33333,0.33333,0.8), (0.33333,0.33333,0.2) ),  # obs=0; (vals for s_f1 over s_f0=0), (vals for s_f1 over s_f0=1)
  ( (0.33333,0.33333,0.0), (0.33333,0.33333,0.0) ),  # obs=1
  ( (0.33333,0.33333,0.2), (0.33333,0.33333,0.8) )   # obs=2
}

# A_m1: num_obs[1]=3, num_states[0]=2, num_states[1]=3
# A[1][2, :, 0] = [1.0,1.0]
# A[1][0:2, :, 1] = softmax([[1,0],[0,1]]) approx [[0.731,0.269],[0.269,0.731]]
# A[1][2, :, 2] = [1.0,1.0]
# Others are 0.
A_m1={
  ( (0.0,0.731,0.0), (0.0,0.269,0.0) ),  # obs=0
  ( (0.0,0.269,0.0), (0.0,0.731,0.0) ),  # obs=1
  ( (1.0,0.0,1.0), (1.0,0.0,1.0) )      # obs=2
}

# A_m2: num_obs[2]=3, num_states[0]=2, num_states[1]=3
# A[2][0,:,0]=1.0; A[2][1,:,1]=1.0; A[2][2,:,2]=1.0
# Others are 0.
A_m2={
  ( (1.0,0.0,0.0), (1.0,0.0,0.0) ),  # obs=0
  ( (0.0,1.0,0.0), (0.0,1.0,0.0) ),  # obs=1
  ( (0.0,0.0,1.0), (0.0,0.0,1.0) )   # obs=2
}

# B_f0: factor 0 (2 states), uncontrolled (1 action). Format B[s_next, s_prev, action=0]
# B_f0 = eye(2)
B_f0={
  ( (1.0),(0.0) ), # s_next=0; (vals for s_prev over action=0)
  ( (0.0),(1.0) )  # s_next=1
}

# B_f1: factor 1 (3 states), 3 actions. Format B[s_next, s_prev, action_idx]
# B_f1[:,:,action_idx] = eye(3) for each action
B_f1={
  ( (1.0,1.0,1.0), (0.0,0.0,0.0), (0.0,0.0,0.0) ), # s_next=0; (vals for actions over s_prev=0), (vals for actions over s_prev=1), ...
  ( (0.0,0.0,0.0), (1.0,1.0,1.0), (0.0,0.0,0.0) ), # s_next=1
  ( (0.0,0.0,0.0), (0.0,0.0,0.0), (1.0,1.0,1.0) )  # s_next=2
}

# C_m0: num_obs[0]=3. Defaults to zeros.
C_m0={(0.0,0.0,0.0)}

# C_m1: num_obs[1]=3. C[1][0]=1.0, C[1][1]=-2.0
C_m1={(1.0,-2.0,0.0)}

# C_m2: num_obs[2]=3. Defaults to zeros.
C_m2={(0.0,0.0,0.0)}

# D_f0: factor 0 (2 states). Uniform prior.
D_f0={(0.5,0.5)}

# D_f1: factor 1 (3 states). Uniform prior.
D_f1={(0.33333,0.33333,0.33333)}

Equations

# Standard PyMDP agent equations for state inference (infer_states),
# policy inference (infer_policies), and action sampling (sample_action).
# qs = infer_states(o)
# q_pi, efe = infer_policies()
# action = sample_action()

Time

Dynamic
DiscreteTime=t
ModelTimeHorizon=Unbounded # Agent definition is generally unbounded, specific simulation runs have a horizon.

ActInfOntologyAnnotation

A_m0=LikelihoodMatrixModality0
A_m1=LikelihoodMatrixModality1
A_m2=LikelihoodMatrixModality2
B_f0=TransitionMatrixFactor0
B_f1=TransitionMatrixFactor1
C_m0=LogPreferenceVectorModality0
C_m1=LogPreferenceVectorModality1
C_m2=LogPreferenceVectorModality2
D_f0=PriorOverHiddenStatesFactor0
D_f1=PriorOverHiddenStatesFactor1
s_f0=HiddenStateFactor0
s_f1=HiddenStateFactor1
s_prime_f0=NextHiddenStateFactor0
s_prime_f1=NextHiddenStateFactor1
o_m0=ObservationModality0
o_m1=ObservationModality1
o_m2=ObservationModality2
π_f1=PolicyVectorFactor1 # Distribution over actions for factor 1
u_f1=ActionFactor1       # Chosen action for factor 1
G=ExpectedFreeEnergy

ModelParameters

num_hidden_states_factors: [2, 3]  # s_f0[2], s_f1[3]
num_obs_modalities: [3, 3, 3]     # o_m0[3], o_m1[3], o_m2[3]
num_control_factors: [1, 3]   # B_f0 actions_dim=1 (uncontrolled), B_f1 actions_dim=3 (controlled by pi_f1)

Footer

Multifactor PyMDP Agent v1 - GNN Representation

Signature

NA

JSON Files

full_model_data.json

{
  "_HeaderComments": "# GNN Example: Multifactor PyMDP Agent\n# Format: Markdown representation of a Multifactor PyMDP model in Active Inference format\n# Version: 1.0\n# This file is machine-readable and attempts to represent a PyMDP agent with multiple observation modalities and hidden state factors.",
  "ModelName": "Multifactor PyMDP Agent v1",
  "GNNSection": "MultifactorPyMDPAgent",
  "GNNVersionAndFlags": "GNN v1",
  "ModelAnnotation": "This model represents a PyMDP agent with multiple observation modalities and hidden state factors.\n- Observation modalities: \"state_observation\" (3 outcomes), \"reward\" (3 outcomes), \"decision_proprioceptive\" (3 outcomes)\n- Hidden state factors: \"reward_level\" (2 states), \"decision_state\" (3 states)\n- Control: \"decision_state\" factor is controllable with 3 possible actions.\nThe parameterization is derived from a PyMDP Python script example.",
  "StateSpaceBlock": "# A_matrices are defined per modality: A_m[observation_outcomes, state_factor0_states, state_factor1_states]\nA_m0[3,2,3,type=float]   # Likelihood for modality 0 (\"state_observation\")\nA_m1[3,2,3,type=float]   # Likelihood for modality 1 (\"reward\")\nA_m2[3,2,3,type=float]   # Likelihood for modality 2 (\"decision_proprioceptive\")\n\n# B_matrices are defined per hidden state factor: B_f[states_next, states_previous, actions]\nB_f0[2,2,1,type=float]   # Transitions for factor 0 (\"reward_level\"), 1 implicit action (uncontrolled)\nB_f1[3,3,3,type=float]   # Transitions for factor 1 (\"decision_state\"), 3 actions\n\n# C_vectors are defined per modality: C_m[observation_outcomes]\nC_m0[3,type=float]       # Preferences for modality 0\nC_m1[3,type=float]       # Preferences for modality 1\nC_m2[3,type=float]       # Preferences for modality 2\n\n# D_vectors are defined per hidden state factor: D_f[states]\nD_f0[2,type=float]       # Prior for factor 0\nD_f1[3,type=float]       # Prior for factor 1\n\n# Hidden States\ns_f0[2,1,type=float]     # Hidden state for factor 0 (\"reward_level\")\ns_f1[3,1,type=float]     # Hidden state for factor 1 (\"decision_state\")\ns_prime_f0[2,1,type=float] # Next hidden state for factor 0\ns_prime_f1[3,1,type=float] # Next hidden state for factor 1\n\n# Observations\no_m0[3,1,type=float]     # Observation for modality 0\no_m1[3,1,type=float]     # Observation for modality 1\no_m2[3,1,type=float]     # Observation for modality 2\n\n# Policy and Control\n\u03c0_f1[3,type=float]       # Policy (distribution over actions) for controllable factor 1\nu_f1[1,type=int]         # Action taken for controllable factor 1\nG[1,type=float]          # Expected Free Energy (overall, or can be per policy)\nt[1,type=int]            # Time step",
  "Connections": "(D_f0,D_f1)-(s_f0,s_f1)\n(s_f0,s_f1)-(A_m0,A_m1,A_m2)\n(A_m0,A_m1,A_m2)-(o_m0,o_m1,o_m2)\n(s_f0,s_f1,u_f1)-(B_f0,B_f1) # u_f1 primarily affects B_f1; B_f0 is uncontrolled\n(B_f0,B_f1)-(s_prime_f0,s_prime_f1)\n(C_m0,C_m1,C_m2)>G\nG>\u03c0_f1\n\u03c0_f1-u_f1\nG=ExpectedFreeEnergy\nt=Time",
  "InitialParameterization": "# A_m0: num_obs[0]=3, num_states[0]=2, num_states[1]=3. Format: A[obs_idx][state_f0_idx][state_f1_idx]\n# A[0][:, :, 0] = np.ones((3,2))/3\n# A[0][:, :, 1] = np.ones((3,2))/3\n# A[0][:, :, 2] = [[0.8,0.2],[0.0,0.0],[0.2,0.8]] (obs x state_f0 for state_f1=2)\nA_m0={\n  ( (0.33333,0.33333,0.8), (0.33333,0.33333,0.2) ),  # obs=0; (vals for s_f1 over s_f0=0), (vals for s_f1 over s_f0=1)\n  ( (0.33333,0.33333,0.0), (0.33333,0.33333,0.0) ),  # obs=1\n  ( (0.33333,0.33333,0.2), (0.33333,0.33333,0.8) )   # obs=2\n}\n\n# A_m1: num_obs[1]=3, num_states[0]=2, num_states[1]=3\n# A[1][2, :, 0] = [1.0,1.0]\n# A[1][0:2, :, 1] = softmax([[1,0],[0,1]]) approx [[0.731,0.269],[0.269,0.731]]\n# A[1][2, :, 2] = [1.0,1.0]\n# Others are 0.\nA_m1={\n  ( (0.0,0.731,0.0), (0.0,0.269,0.0) ),  # obs=0\n  ( (0.0,0.269,0.0), (0.0,0.731,0.0) ),  # obs=1\n  ( (1.0,0.0,1.0), (1.0,0.0,1.0) )      # obs=2\n}\n\n# A_m2: num_obs[2]=3, num_states[0]=2, num_states[1]=3\n# A[2][0,:,0]=1.0; A[2][1,:,1]=1.0; A[2][2,:,2]=1.0\n# Others are 0.\nA_m2={\n  ( (1.0,0.0,0.0), (1.0,0.0,0.0) ),  # obs=0\n  ( (0.0,1.0,0.0), (0.0,1.0,0.0) ),  # obs=1\n  ( (0.0,0.0,1.0), (0.0,0.0,1.0) )   # obs=2\n}\n\n# B_f0: factor 0 (2 states), uncontrolled (1 action). Format B[s_next, s_prev, action=0]\n# B_f0 = eye(2)\nB_f0={\n  ( (1.0),(0.0) ), # s_next=0; (vals for s_prev over action=0)\n  ( (0.0),(1.0) )  # s_next=1\n}\n\n# B_f1: factor 1 (3 states), 3 actions. Format B[s_next, s_prev, action_idx]\n# B_f1[:,:,action_idx] = eye(3) for each action\nB_f1={\n  ( (1.0,1.0,1.0), (0.0,0.0,0.0), (0.0,0.0,0.0) ), # s_next=0; (vals for actions over s_prev=0), (vals for actions over s_prev=1), ...\n  ( (0.0,0.0,0.0), (1.0,1.0,1.0), (0.0,0.0,0.0) ), # s_next=1\n  ( (0.0,0.0,0.0), (0.0,0.0,0.0), (1.0,1.0,1.0) )  # s_next=2\n}\n\n# C_m0: num_obs[0]=3. Defaults to zeros.\nC_m0={(0.0,0.0,0.0)}\n\n# C_m1: num_obs[1]=3. C[1][0]=1.0, C[1][1]=-2.0\nC_m1={(1.0,-2.0,0.0)}\n\n# C_m2: num_obs[2]=3. Defaults to zeros.\nC_m2={(0.0,0.0,0.0)}\n\n# D_f0: factor 0 (2 states). Uniform prior.\nD_f0={(0.5,0.5)}\n\n# D_f1: factor 1 (3 states). Uniform prior.\nD_f1={(0.33333,0.33333,0.33333)}",
  "Equations": "# Standard PyMDP agent equations for state inference (infer_states),\n# policy inference (infer_policies), and action sampling (sample_action).\n# qs = infer_states(o)\n# q_pi, efe = infer_policies()\n# action = sample_action()",
  "Time": "Dynamic\nDiscreteTime=t\nModelTimeHorizon=Unbounded # Agent definition is generally unbounded, specific simulation runs have a horizon.",
  "ActInfOntologyAnnotation": "A_m0=LikelihoodMatrixModality0\nA_m1=LikelihoodMatrixModality1\nA_m2=LikelihoodMatrixModality2\nB_f0=TransitionMatrixFactor0\nB_f1=TransitionMatrixFactor1\nC_m0=LogPreferenceVectorModality0\nC_m1=LogPreferenceVectorModality1\nC_m2=LogPreferenceVectorModality2\nD_f0=PriorOverHiddenStatesFactor0\nD_f1=PriorOverHiddenStatesFactor1\ns_f0=HiddenStateFactor0\ns_f1=HiddenStateFactor1\ns_prime_f0=NextHiddenStateFactor0\ns_prime_f1=NextHiddenStateFactor1\no_m0=ObservationModality0\no_m1=ObservationModality1\no_m2=ObservationModality2\n\u03c0_f1=PolicyVectorFactor1 # Distribution over actions for factor 1\nu_f1=ActionFactor1       # Chosen action for factor 1\nG=ExpectedFreeEnergy",
  "ModelParameters": "num_hidden_states_factors: [2, 3]  # s_f0[2], s_f1[3]\nnum_obs_modalities: [3, 3, 3]     # o_m0[3], o_m1[3], o_m2[3]\nnum_control_factors: [1, 3]   # B_f0 actions_dim=1 (uncontrolled), B_f1 actions_dim=3 (controlled by pi_f1)",
  "Footer": "Multifactor PyMDP Agent v1 - GNN Representation",
  "Signature": "NA"
}
full_model_data.json

model_metadata.json

{
  "ModelName": "Multifactor PyMDP Agent v1",
  "ModelAnnotation": "This model represents a PyMDP agent with multiple observation modalities and hidden state factors.\n- Observation modalities: \"state_observation\" (3 outcomes), \"reward\" (3 outcomes), \"decision_proprioceptive\" (3 outcomes)\n- Hidden state factors: \"reward_level\" (2 states), \"decision_state\" (3 states)\n- Control: \"decision_state\" factor is controllable with 3 possible actions.\nThe parameterization is derived from a PyMDP Python script example.",
  "GNNVersionAndFlags": "GNN v1",
  "Time": "Dynamic\nDiscreteTime=t\nModelTimeHorizon=Unbounded # Agent definition is generally unbounded, specific simulation runs have a horizon.",
  "ActInfOntologyAnnotation": "A_m0=LikelihoodMatrixModality0\nA_m1=LikelihoodMatrixModality1\nA_m2=LikelihoodMatrixModality2\nB_f0=TransitionMatrixFactor0\nB_f1=TransitionMatrixFactor1\nC_m0=LogPreferenceVectorModality0\nC_m1=LogPreferenceVectorModality1\nC_m2=LogPreferenceVectorModality2\nD_f0=PriorOverHiddenStatesFactor0\nD_f1=PriorOverHiddenStatesFactor1\ns_f0=HiddenStateFactor0\ns_f1=HiddenStateFactor1\ns_prime_f0=NextHiddenStateFactor0\ns_prime_f1=NextHiddenStateFactor1\no_m0=ObservationModality0\no_m1=ObservationModality1\no_m2=ObservationModality2\n\u03c0_f1=PolicyVectorFactor1 # Distribution over actions for factor 1\nu_f1=ActionFactor1       # Chosen action for factor 1\nG=ExpectedFreeEnergy"
}
model_metadata.json

Visualizations for rxinfer_multiagent_gnn: rxinfer_multiagent_gnn

Images

Markdown Reports

file_content.md

GNN File: src/gnn/examples/rxinfer_multiagent_gnn.md\n\n## Raw File Content\n\n```\n# GNN Example: RxInfer Multi-agent Trajectory Planning

Format: Markdown representation of a Multi-agent Trajectory Planning model for RxInfer.jl

Version: 1.0

This file is machine-readable and represents the configuration for the RxInfer.jl multi-agent trajectory planning example.

GNNSection

RxInferMultiAgentTrajectoryPlanning

GNNVersionAndFlags

GNN v1

ModelName

Multi-agent Trajectory Planning

ModelAnnotation

This model represents a multi-agent trajectory planning scenario in RxInfer.jl. It includes: - State space model for agents moving in a 2D environment - Obstacle avoidance constraints - Goal-directed behavior - Inter-agent collision avoidance The model can be used to simulate trajectory planning in various environments with obstacles.

StateSpaceBlock

Model parameters

dt[1,type=float] # Time step for the state space model gamma[1,type=float] # Constraint parameter for the Halfspace node nr_steps[1,type=int] # Number of time steps in the trajectory nr_iterations[1,type=int] # Number of inference iterations nr_agents[1,type=int] # Number of agents in the simulation softmin_temperature[1,type=float] # Temperature parameter for the softmin function intermediate_steps[1,type=int] # Intermediate results saving interval save_intermediates[1,type=bool] # Whether to save intermediate results

State space matrices

A[4,4,type=float] # State transition matrix B[4,2,type=float] # Control input matrix C[2,4,type=float] # Observation matrix

Prior distributions

initial_state_variance[1,type=float] # Prior on initial state control_variance[1,type=float] # Prior on control inputs goal_constraint_variance[1,type=float] # Goal constraints variance gamma_shape[1,type=float] # Parameters for GammaShapeRate prior gamma_scale_factor[1,type=float] # Parameters for GammaShapeRate prior

Visualization parameters

x_limits[2,type=float] # Plot boundaries (x-axis) y_limits[2,type=float] # Plot boundaries (y-axis) fps[1,type=int] # Animation frames per second heatmap_resolution[1,type=int] # Heatmap resolution plot_width[1,type=int] # Plot width plot_height[1,type=int] # Plot height agent_alpha[1,type=float] # Visualization alpha for agents target_alpha[1,type=float] # Visualization alpha for targets color_palette[1,type=string] # Color palette for visualization

Environment definitions

door_obstacle_center_1[2,type=float] # Door environment, obstacle 1 center door_obstacle_size_1[2,type=float] # Door environment, obstacle 1 size door_obstacle_center_2[2,type=float] # Door environment, obstacle 2 center door_obstacle_size_2[2,type=float] # Door environment, obstacle 2 size

wall_obstacle_center[2,type=float] # Wall environment, obstacle center wall_obstacle_size[2,type=float] # Wall environment, obstacle size

combined_obstacle_center_1[2,type=float] # Combined environment, obstacle 1 center combined_obstacle_size_1[2,type=float] # Combined environment, obstacle 1 size combined_obstacle_center_2[2,type=float] # Combined environment, obstacle 2 center combined_obstacle_size_2[2,type=float] # Combined environment, obstacle 2 size combined_obstacle_center_3[2,type=float] # Combined environment, obstacle 3 center combined_obstacle_size_3[2,type=float] # Combined environment, obstacle 3 size

Agent configurations

agent1_id[1,type=int] # Agent 1 ID agent1_radius[1,type=float] # Agent 1 radius agent1_initial_position[2,type=float] # Agent 1 initial position agent1_target_position[2,type=float] # Agent 1 target position

agent2_id[1,type=int] # Agent 2 ID agent2_radius[1,type=float] # Agent 2 radius agent2_initial_position[2,type=float] # Agent 2 initial position agent2_target_position[2,type=float] # Agent 2 target position

agent3_id[1,type=int] # Agent 3 ID agent3_radius[1,type=float] # Agent 3 radius agent3_initial_position[2,type=float] # Agent 3 initial position agent3_target_position[2,type=float] # Agent 3 target position

agent4_id[1,type=int] # Agent 4 ID agent4_radius[1,type=float] # Agent 4 radius agent4_initial_position[2,type=float] # Agent 4 initial position agent4_target_position[2,type=float] # Agent 4 target position

Experiment configurations

experiment_seeds[2,type=int] # Random seeds for reproducibility results_dir[1,type=string] # Base directory for results animation_template[1,type=string] # Filename template for animations control_vis_filename[1,type=string] # Filename for control visualization obstacle_distance_filename[1,type=string] # Filename for obstacle distance plot path_uncertainty_filename[1,type=string] # Filename for path uncertainty plot convergence_filename[1,type=string] # Filename for convergence plot

Connections

Model parameters

dt > A (A, B, C) > state_space_model

Agent trajectories

(state_space_model, initial_state_variance, control_variance) > agent_trajectories

Goal constraints

(agent_trajectories, goal_constraint_variance) > goal_directed_behavior

Obstacle avoidance

(agent_trajectories, gamma, gamma_shape, gamma_scale_factor) > obstacle_avoidance

Collision avoidance

(agent_trajectories, nr_agents) > collision_avoidance

Complete planning system

(goal_directed_behavior, obstacle_avoidance, collision_avoidance) > planning_system

InitialParameterization

Model parameters

dt=1.0 gamma=1.0 nr_steps=40 nr_iterations=350 nr_agents=4 softmin_temperature=10.0 intermediate_steps=10 save_intermediates=false

State space matrices

A = [1 dt 0 0; 0 1 0 0; 0 0 1 dt; 0 0 0 1]

A={(1.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.0, 1.0)}

B = [0 0; dt 0; 0 0; 0 dt]

B={(0.0, 0.0), (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)}

C = [1 0 0 0; 0 0 1 0]

C={(1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0)}

Prior distributions

initial_state_variance=100.0 control_variance=0.1 goal_constraint_variance=0.00001 gamma_shape=1.5 gamma_scale_factor=0.5

Visualization parameters

x_limits={(-20, 20)} y_limits={(-20, 20)} fps=15 heatmap_resolution=100 plot_width=800 plot_height=400 agent_alpha=1.0 target_alpha=0.2 color_palette="tab10"

Environment definitions

door_obstacle_center_1={(-40.0, 0.0)} door_obstacle_size_1={(70.0, 5.0)} door_obstacle_center_2={(40.0, 0.0)} door_obstacle_size_2={(70.0, 5.0)}

wall_obstacle_center={(0.0, 0.0)} wall_obstacle_size={(10.0, 5.0)}

combined_obstacle_center_1={(-50.0, 0.0)} combined_obstacle_size_1={(70.0, 2.0)} combined_obstacle_center_2={(50.0, 0.0)} combined_obstacle_size_2={(70.0, 2.0)} combined_obstacle_center_3={(5.0, -1.0)} combined_obstacle_size_3={(3.0, 10.0)}

Agent configurations

agent1_id=1 agent1_radius=2.5 agent1_initial_position={(-4.0, 10.0)} agent1_target_position={(-10.0, -10.0)}

agent2_id=2 agent2_radius=1.5 agent2_initial_position={(-10.0, 5.0)} agent2_target_position={(10.0, -15.0)}

agent3_id=3 agent3_radius=1.0 agent3_initial_position={(-15.0, -10.0)} agent3_target_position={(10.0, 10.0)}

agent4_id=4 agent4_radius=2.5 agent4_initial_position={(0.0, -10.0)} agent4_target_position={(-10.0, 15.0)}

Experiment configurations

experiment_seeds={(42, 123)} results_dir="results" animation_template="{environment}_{seed}.gif" control_vis_filename="control_signals.gif" obstacle_distance_filename="obstacle_distance.png" path_uncertainty_filename="path_uncertainty.png" convergence_filename="convergence.png"

Equations

State space model:

x_{t+1} = A * x_t + B * u_t + w_t, w_t ~ N(0, control_variance)

y_t = C * x_t + v_t, v_t ~ N(0, observation_variance)

Obstacle avoidance constraint:

p(x_t | obstacle) ~ N(d(x_t, obstacle), gamma)

where d(x_t, obstacle) is the distance from position x_t to the nearest obstacle

Goal constraint:

p(x_T | goal) ~ N(goal, goal_constraint_variance)

where x_T is the final position

Collision avoidance constraint:

p(x_i, x_j) ~ N(||x_i - x_j|| - (r_i + r_j), gamma)

where x_i, x_j are positions of agents i and j, r_i, r_j are their radii

Time

Dynamic DiscreteTime ModelTimeHorizon=nr_steps

ActInfOntologyAnnotation

dt=TimeStep gamma=ConstraintParameter nr_steps=TrajectoryLength nr_iterations=InferenceIterations nr_agents=NumberOfAgents softmin_temperature=SoftminTemperature A=StateTransitionMatrix B=ControlInputMatrix C=ObservationMatrix initial_state_variance=InitialStateVariance control_variance=ControlVariance goal_constraint_variance=GoalConstraintVariance

ModelParameters

nr_agents=4 nr_steps=40 nr_iterations=350

Footer

Multi-agent Trajectory Planning - GNN Representation for RxInfer.jl

Signature

Creator: AI Assistant for GNN Date: 2024-07-27 Status: Example for RxInfer.jl multi-agent trajectory planning \n```\n\n## Parsed Sections

_HeaderComments

# GNN Example: RxInfer Multi-agent Trajectory Planning
# Format: Markdown representation of a Multi-agent Trajectory Planning model for RxInfer.jl
# Version: 1.0
# This file is machine-readable and represents the configuration for the RxInfer.jl multi-agent trajectory planning example.

ModelName

Multi-agent Trajectory Planning

GNNSection

RxInferMultiAgentTrajectoryPlanning

GNNVersionAndFlags

GNN v1

ModelAnnotation

This model represents a multi-agent trajectory planning scenario in RxInfer.jl.
It includes:
- State space model for agents moving in a 2D environment
- Obstacle avoidance constraints
- Goal-directed behavior
- Inter-agent collision avoidance
The model can be used to simulate trajectory planning in various environments with obstacles.

StateSpaceBlock

# Model parameters
dt[1,type=float]               # Time step for the state space model
gamma[1,type=float]            # Constraint parameter for the Halfspace node
nr_steps[1,type=int]           # Number of time steps in the trajectory
nr_iterations[1,type=int]      # Number of inference iterations
nr_agents[1,type=int]          # Number of agents in the simulation
softmin_temperature[1,type=float] # Temperature parameter for the softmin function
intermediate_steps[1,type=int] # Intermediate results saving interval
save_intermediates[1,type=bool] # Whether to save intermediate results

# State space matrices
A[4,4,type=float]              # State transition matrix
B[4,2,type=float]              # Control input matrix
C[2,4,type=float]              # Observation matrix

# Prior distributions
initial_state_variance[1,type=float]    # Prior on initial state
control_variance[1,type=float]          # Prior on control inputs
goal_constraint_variance[1,type=float]  # Goal constraints variance
gamma_shape[1,type=float]               # Parameters for GammaShapeRate prior
gamma_scale_factor[1,type=float]        # Parameters for GammaShapeRate prior

# Visualization parameters
x_limits[2,type=float]            # Plot boundaries (x-axis)
y_limits[2,type=float]            # Plot boundaries (y-axis)
fps[1,type=int]                   # Animation frames per second
heatmap_resolution[1,type=int]    # Heatmap resolution
plot_width[1,type=int]            # Plot width
plot_height[1,type=int]           # Plot height
agent_alpha[1,type=float]         # Visualization alpha for agents
target_alpha[1,type=float]        # Visualization alpha for targets
color_palette[1,type=string]      # Color palette for visualization

# Environment definitions
door_obstacle_center_1[2,type=float]    # Door environment, obstacle 1 center
door_obstacle_size_1[2,type=float]      # Door environment, obstacle 1 size
door_obstacle_center_2[2,type=float]    # Door environment, obstacle 2 center
door_obstacle_size_2[2,type=float]      # Door environment, obstacle 2 size

wall_obstacle_center[2,type=float]      # Wall environment, obstacle center
wall_obstacle_size[2,type=float]        # Wall environment, obstacle size

combined_obstacle_center_1[2,type=float] # Combined environment, obstacle 1 center
combined_obstacle_size_1[2,type=float]   # Combined environment, obstacle 1 size
combined_obstacle_center_2[2,type=float] # Combined environment, obstacle 2 center
combined_obstacle_size_2[2,type=float]   # Combined environment, obstacle 2 size
combined_obstacle_center_3[2,type=float] # Combined environment, obstacle 3 center
combined_obstacle_size_3[2,type=float]   # Combined environment, obstacle 3 size

# Agent configurations
agent1_id[1,type=int]                   # Agent 1 ID
agent1_radius[1,type=float]             # Agent 1 radius
agent1_initial_position[2,type=float]   # Agent 1 initial position
agent1_target_position[2,type=float]    # Agent 1 target position

agent2_id[1,type=int]                   # Agent 2 ID
agent2_radius[1,type=float]             # Agent 2 radius
agent2_initial_position[2,type=float]   # Agent 2 initial position
agent2_target_position[2,type=float]    # Agent 2 target position

agent3_id[1,type=int]                   # Agent 3 ID
agent3_radius[1,type=float]             # Agent 3 radius
agent3_initial_position[2,type=float]   # Agent 3 initial position
agent3_target_position[2,type=float]    # Agent 3 target position

agent4_id[1,type=int]                   # Agent 4 ID
agent4_radius[1,type=float]             # Agent 4 radius
agent4_initial_position[2,type=float]   # Agent 4 initial position
agent4_target_position[2,type=float]    # Agent 4 target position

# Experiment configurations
experiment_seeds[2,type=int]            # Random seeds for reproducibility
results_dir[1,type=string]              # Base directory for results
animation_template[1,type=string]       # Filename template for animations
control_vis_filename[1,type=string]     # Filename for control visualization
obstacle_distance_filename[1,type=string] # Filename for obstacle distance plot
path_uncertainty_filename[1,type=string]  # Filename for path uncertainty plot
convergence_filename[1,type=string]       # Filename for convergence plot

Connections

# Model parameters
dt > A
(A, B, C) > state_space_model

# Agent trajectories
(state_space_model, initial_state_variance, control_variance) > agent_trajectories

# Goal constraints
(agent_trajectories, goal_constraint_variance) > goal_directed_behavior

# Obstacle avoidance
(agent_trajectories, gamma, gamma_shape, gamma_scale_factor) > obstacle_avoidance

# Collision avoidance
(agent_trajectories, nr_agents) > collision_avoidance

# Complete planning system
(goal_directed_behavior, obstacle_avoidance, collision_avoidance) > planning_system

InitialParameterization

# Model parameters
dt=1.0
gamma=1.0
nr_steps=40
nr_iterations=350
nr_agents=4
softmin_temperature=10.0
intermediate_steps=10
save_intermediates=false

# State space matrices
# A = [1 dt 0 0; 0 1 0 0; 0 0 1 dt; 0 0 0 1]
A={(1.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.0, 1.0)}

# B = [0 0; dt 0; 0 0; 0 dt]
B={(0.0, 0.0), (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)}

# C = [1 0 0 0; 0 0 1 0]
C={(1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0)}

# Prior distributions
initial_state_variance=100.0
control_variance=0.1
goal_constraint_variance=0.00001
gamma_shape=1.5
gamma_scale_factor=0.5

# Visualization parameters
x_limits={(-20, 20)}
y_limits={(-20, 20)}
fps=15
heatmap_resolution=100
plot_width=800
plot_height=400
agent_alpha=1.0
target_alpha=0.2
color_palette="tab10"

# Environment definitions
door_obstacle_center_1={(-40.0, 0.0)}
door_obstacle_size_1={(70.0, 5.0)}
door_obstacle_center_2={(40.0, 0.0)}
door_obstacle_size_2={(70.0, 5.0)}

wall_obstacle_center={(0.0, 0.0)}
wall_obstacle_size={(10.0, 5.0)}

combined_obstacle_center_1={(-50.0, 0.0)}
combined_obstacle_size_1={(70.0, 2.0)}
combined_obstacle_center_2={(50.0, 0.0)}
combined_obstacle_size_2={(70.0, 2.0)}
combined_obstacle_center_3={(5.0, -1.0)}
combined_obstacle_size_3={(3.0, 10.0)}

# Agent configurations
agent1_id=1
agent1_radius=2.5
agent1_initial_position={(-4.0, 10.0)}
agent1_target_position={(-10.0, -10.0)}

agent2_id=2
agent2_radius=1.5
agent2_initial_position={(-10.0, 5.0)}
agent2_target_position={(10.0, -15.0)}

agent3_id=3
agent3_radius=1.0
agent3_initial_position={(-15.0, -10.0)}
agent3_target_position={(10.0, 10.0)}

agent4_id=4
agent4_radius=2.5
agent4_initial_position={(0.0, -10.0)}
agent4_target_position={(-10.0, 15.0)}

# Experiment configurations
experiment_seeds={(42, 123)}
results_dir="results"
animation_template="{environment}_{seed}.gif"
control_vis_filename="control_signals.gif"
obstacle_distance_filename="obstacle_distance.png"
path_uncertainty_filename="path_uncertainty.png"
convergence_filename="convergence.png"

Equations

# State space model:
# x_{t+1} = A * x_t + B * u_t + w_t,  w_t ~ N(0, control_variance)
# y_t = C * x_t + v_t,                v_t ~ N(0, observation_variance)
#
# Obstacle avoidance constraint:
# p(x_t | obstacle) ~ N(d(x_t, obstacle), gamma)
# where d(x_t, obstacle) is the distance from position x_t to the nearest obstacle
#
# Goal constraint:
# p(x_T | goal) ~ N(goal, goal_constraint_variance)
# where x_T is the final position
#
# Collision avoidance constraint:
# p(x_i, x_j) ~ N(||x_i - x_j|| - (r_i + r_j), gamma)
# where x_i, x_j are positions of agents i and j, r_i, r_j are their radii

Time

Dynamic
DiscreteTime
ModelTimeHorizon=nr_steps

ActInfOntologyAnnotation

dt=TimeStep
gamma=ConstraintParameter
nr_steps=TrajectoryLength
nr_iterations=InferenceIterations
nr_agents=NumberOfAgents
softmin_temperature=SoftminTemperature
A=StateTransitionMatrix
B=ControlInputMatrix
C=ObservationMatrix
initial_state_variance=InitialStateVariance
control_variance=ControlVariance
goal_constraint_variance=GoalConstraintVariance

ModelParameters

nr_agents=4
nr_steps=40
nr_iterations=350

Footer

Multi-agent Trajectory Planning - GNN Representation for RxInfer.jl

Signature

Creator: AI Assistant for GNN
Date: 2024-07-27
Status: Example for RxInfer.jl multi-agent trajectory planning

JSON Files

full_model_data.json

{
  "_HeaderComments": "# GNN Example: RxInfer Multi-agent Trajectory Planning\n# Format: Markdown representation of a Multi-agent Trajectory Planning model for RxInfer.jl\n# Version: 1.0\n# This file is machine-readable and represents the configuration for the RxInfer.jl multi-agent trajectory planning example.",
  "ModelName": "Multi-agent Trajectory Planning",
  "GNNSection": "RxInferMultiAgentTrajectoryPlanning",
  "GNNVersionAndFlags": "GNN v1",
  "ModelAnnotation": "This model represents a multi-agent trajectory planning scenario in RxInfer.jl.\nIt includes:\n- State space model for agents moving in a 2D environment\n- Obstacle avoidance constraints\n- Goal-directed behavior\n- Inter-agent collision avoidance\nThe model can be used to simulate trajectory planning in various environments with obstacles.",
  "StateSpaceBlock": "# Model parameters\ndt[1,type=float]               # Time step for the state space model\ngamma[1,type=float]            # Constraint parameter for the Halfspace node\nnr_steps[1,type=int]           # Number of time steps in the trajectory\nnr_iterations[1,type=int]      # Number of inference iterations\nnr_agents[1,type=int]          # Number of agents in the simulation\nsoftmin_temperature[1,type=float] # Temperature parameter for the softmin function\nintermediate_steps[1,type=int] # Intermediate results saving interval\nsave_intermediates[1,type=bool] # Whether to save intermediate results\n\n# State space matrices\nA[4,4,type=float]              # State transition matrix\nB[4,2,type=float]              # Control input matrix\nC[2,4,type=float]              # Observation matrix\n\n# Prior distributions\ninitial_state_variance[1,type=float]    # Prior on initial state\ncontrol_variance[1,type=float]          # Prior on control inputs\ngoal_constraint_variance[1,type=float]  # Goal constraints variance\ngamma_shape[1,type=float]               # Parameters for GammaShapeRate prior\ngamma_scale_factor[1,type=float]        # Parameters for GammaShapeRate prior\n\n# Visualization parameters\nx_limits[2,type=float]            # Plot boundaries (x-axis)\ny_limits[2,type=float]            # Plot boundaries (y-axis)\nfps[1,type=int]                   # Animation frames per second\nheatmap_resolution[1,type=int]    # Heatmap resolution\nplot_width[1,type=int]            # Plot width\nplot_height[1,type=int]           # Plot height\nagent_alpha[1,type=float]         # Visualization alpha for agents\ntarget_alpha[1,type=float]        # Visualization alpha for targets\ncolor_palette[1,type=string]      # Color palette for visualization\n\n# Environment definitions\ndoor_obstacle_center_1[2,type=float]    # Door environment, obstacle 1 center\ndoor_obstacle_size_1[2,type=float]      # Door environment, obstacle 1 size\ndoor_obstacle_center_2[2,type=float]    # Door environment, obstacle 2 center\ndoor_obstacle_size_2[2,type=float]      # Door environment, obstacle 2 size\n\nwall_obstacle_center[2,type=float]      # Wall environment, obstacle center\nwall_obstacle_size[2,type=float]        # Wall environment, obstacle size\n\ncombined_obstacle_center_1[2,type=float] # Combined environment, obstacle 1 center\ncombined_obstacle_size_1[2,type=float]   # Combined environment, obstacle 1 size\ncombined_obstacle_center_2[2,type=float] # Combined environment, obstacle 2 center\ncombined_obstacle_size_2[2,type=float]   # Combined environment, obstacle 2 size\ncombined_obstacle_center_3[2,type=float] # Combined environment, obstacle 3 center\ncombined_obstacle_size_3[2,type=float]   # Combined environment, obstacle 3 size\n\n# Agent configurations\nagent1_id[1,type=int]                   # Agent 1 ID\nagent1_radius[1,type=float]             # Agent 1 radius\nagent1_initial_position[2,type=float]   # Agent 1 initial position\nagent1_target_position[2,type=float]    # Agent 1 target position\n\nagent2_id[1,type=int]                   # Agent 2 ID\nagent2_radius[1,type=float]             # Agent 2 radius\nagent2_initial_position[2,type=float]   # Agent 2 initial position\nagent2_target_position[2,type=float]    # Agent 2 target position\n\nagent3_id[1,type=int]                   # Agent 3 ID\nagent3_radius[1,type=float]             # Agent 3 radius\nagent3_initial_position[2,type=float]   # Agent 3 initial position\nagent3_target_position[2,type=float]    # Agent 3 target position\n\nagent4_id[1,type=int]                   # Agent 4 ID\nagent4_radius[1,type=float]             # Agent 4 radius\nagent4_initial_position[2,type=float]   # Agent 4 initial position\nagent4_target_position[2,type=float]    # Agent 4 target position\n\n# Experiment configurations\nexperiment_seeds[2,type=int]            # Random seeds for reproducibility\nresults_dir[1,type=string]              # Base directory for results\nanimation_template[1,type=string]       # Filename template for animations\ncontrol_vis_filename[1,type=string]     # Filename for control visualization\nobstacle_distance_filename[1,type=string] # Filename for obstacle distance plot\npath_uncertainty_filename[1,type=string]  # Filename for path uncertainty plot\nconvergence_filename[1,type=string]       # Filename for convergence plot",
  "Connections": "# Model parameters\ndt > A\n(A, B, C) > state_space_model\n\n# Agent trajectories\n(state_space_model, initial_state_variance, control_variance) > agent_trajectories\n\n# Goal constraints\n(agent_trajectories, goal_constraint_variance) > goal_directed_behavior\n\n# Obstacle avoidance\n(agent_trajectories, gamma, gamma_shape, gamma_scale_factor) > obstacle_avoidance\n\n# Collision avoidance\n(agent_trajectories, nr_agents) > collision_avoidance\n\n# Complete planning system\n(goal_directed_behavior, obstacle_avoidance, collision_avoidance) > planning_system",
  "InitialParameterization": "# Model parameters\ndt=1.0\ngamma=1.0\nnr_steps=40\nnr_iterations=350\nnr_agents=4\nsoftmin_temperature=10.0\nintermediate_steps=10\nsave_intermediates=false\n\n# State space matrices\n# A = [1 dt 0 0; 0 1 0 0; 0 0 1 dt; 0 0 0 1]\nA={(1.0, 1.0, 0.0, 0.0), (0.0, 1.0, 0.0, 0.0), (0.0, 0.0, 1.0, 1.0), (0.0, 0.0, 0.0, 1.0)}\n\n# B = [0 0; dt 0; 0 0; 0 dt]\nB={(0.0, 0.0), (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)}\n\n# C = [1 0 0 0; 0 0 1 0]\nC={(1.0, 0.0, 0.0, 0.0), (0.0, 0.0, 1.0, 0.0)}\n\n# Prior distributions\ninitial_state_variance=100.0\ncontrol_variance=0.1\ngoal_constraint_variance=0.00001\ngamma_shape=1.5\ngamma_scale_factor=0.5\n\n# Visualization parameters\nx_limits={(-20, 20)}\ny_limits={(-20, 20)}\nfps=15\nheatmap_resolution=100\nplot_width=800\nplot_height=400\nagent_alpha=1.0\ntarget_alpha=0.2\ncolor_palette=\"tab10\"\n\n# Environment definitions\ndoor_obstacle_center_1={(-40.0, 0.0)}\ndoor_obstacle_size_1={(70.0, 5.0)}\ndoor_obstacle_center_2={(40.0, 0.0)}\ndoor_obstacle_size_2={(70.0, 5.0)}\n\nwall_obstacle_center={(0.0, 0.0)}\nwall_obstacle_size={(10.0, 5.0)}\n\ncombined_obstacle_center_1={(-50.0, 0.0)}\ncombined_obstacle_size_1={(70.0, 2.0)}\ncombined_obstacle_center_2={(50.0, 0.0)}\ncombined_obstacle_size_2={(70.0, 2.0)}\ncombined_obstacle_center_3={(5.0, -1.0)}\ncombined_obstacle_size_3={(3.0, 10.0)}\n\n# Agent configurations\nagent1_id=1\nagent1_radius=2.5\nagent1_initial_position={(-4.0, 10.0)}\nagent1_target_position={(-10.0, -10.0)}\n\nagent2_id=2\nagent2_radius=1.5\nagent2_initial_position={(-10.0, 5.0)}\nagent2_target_position={(10.0, -15.0)}\n\nagent3_id=3\nagent3_radius=1.0\nagent3_initial_position={(-15.0, -10.0)}\nagent3_target_position={(10.0, 10.0)}\n\nagent4_id=4\nagent4_radius=2.5\nagent4_initial_position={(0.0, -10.0)}\nagent4_target_position={(-10.0, 15.0)}\n\n# Experiment configurations\nexperiment_seeds={(42, 123)}\nresults_dir=\"results\"\nanimation_template=\"{environment}_{seed}.gif\"\ncontrol_vis_filename=\"control_signals.gif\"\nobstacle_distance_filename=\"obstacle_distance.png\"\npath_uncertainty_filename=\"path_uncertainty.png\"\nconvergence_filename=\"convergence.png\"",
  "Equations": "# State space model:\n# x_{t+1} = A * x_t + B * u_t + w_t,  w_t ~ N(0, control_variance)\n# y_t = C * x_t + v_t,                v_t ~ N(0, observation_variance)\n#\n# Obstacle avoidance constraint:\n# p(x_t | obstacle) ~ N(d(x_t, obstacle), gamma)\n# where d(x_t, obstacle) is the distance from position x_t to the nearest obstacle\n#\n# Goal constraint:\n# p(x_T | goal) ~ N(goal, goal_constraint_variance)\n# where x_T is the final position\n#\n# Collision avoidance constraint:\n# p(x_i, x_j) ~ N(||x_i - x_j|| - (r_i + r_j), gamma)\n# where x_i, x_j are positions of agents i and j, r_i, r_j are their radii",
  "Time": "Dynamic\nDiscreteTime\nModelTimeHorizon=nr_steps",
  "ActInfOntologyAnnotation": "dt=TimeStep\ngamma=ConstraintParameter\nnr_steps=TrajectoryLength\nnr_iterations=InferenceIterations\nnr_agents=NumberOfAgents\nsoftmin_temperature=SoftminTemperature\nA=StateTransitionMatrix\nB=ControlInputMatrix\nC=ObservationMatrix\ninitial_state_variance=InitialStateVariance\ncontrol_variance=ControlVariance\ngoal_constraint_variance=GoalConstraintVariance",
  "ModelParameters": "nr_agents=4\nnr_steps=40\nnr_iterations=350",
  "Footer": "Multi-agent Trajectory Planning - GNN Representation for RxInfer.jl",
  "Signature": "Creator: AI Assistant for GNN\nDate: 2024-07-27\nStatus: Example for RxInfer.jl multi-agent trajectory planning"
}
full_model_data.json

model_metadata.json

{
  "ModelName": "Multi-agent Trajectory Planning",
  "ModelAnnotation": "This model represents a multi-agent trajectory planning scenario in RxInfer.jl.\nIt includes:\n- State space model for agents moving in a 2D environment\n- Obstacle avoidance constraints\n- Goal-directed behavior\n- Inter-agent collision avoidance\nThe model can be used to simulate trajectory planning in various environments with obstacles.",
  "GNNVersionAndFlags": "GNN v1",
  "Time": "Dynamic\nDiscreteTime\nModelTimeHorizon=nr_steps",
  "ActInfOntologyAnnotation": "dt=TimeStep\ngamma=ConstraintParameter\nnr_steps=TrajectoryLength\nnr_iterations=InferenceIterations\nnr_agents=NumberOfAgents\nsoftmin_temperature=SoftminTemperature\nA=StateTransitionMatrix\nB=ControlInputMatrix\nC=ObservationMatrix\ninitial_state_variance=InitialStateVariance\ncontrol_variance=ControlVariance\ngoal_constraint_variance=GoalConstraintVariance"
}
model_metadata.json

MCP Integration Report (Step 7)

🤖 MCP Integration and API Report

🗓️ Report Generated: 2025-06-06 12:57:41

MCP Core Directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp Project Source Root (for modules): /home/trim/Documents/GitHub/GeneralizedNotationNotation/src Output Directory for this report: /home/trim/Documents/GitHub/GeneralizedNotationNotation/output/mcp_processing_step

🌐 Global Summary of Registered MCP Tools

This section lists all tools currently registered with the MCP system, along with their defining module, arguments, and description.

🔬 Core MCP File Check

This section verifies the presence of essential MCP files in the core directory: /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/mcp

Status: 5/5 core MCP files found. All core files seem present.

🧩 Functional Module MCP Integration & API Check

Checking for mcp.py in these subdirectories of /home/trim/Documents/GitHub/GeneralizedNotationNotation/src: ['export', 'gnn', 'gnn_type_checker', 'ontology', 'setup', 'tests', 'visualization', 'llm']

Module: export (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/export)


Module: gnn (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn)


Module: gnn_type_checker (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/gnn_type_checker)


Module: ontology (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/ontology)


Module: setup (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/setup)


Module: tests (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/tests)


Module: visualization (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/visualization)


Module: llm (at /home/trim/Documents/GitHub/GeneralizedNotationNotation/src/llm)


📊 Overall Module Integration Summary

Ontology Processing (Step 8)

🧬 GNN Ontological Annotations Report

📊 Summary of Ontology Processing


��️ Report Generated: 2025-06-06 12:57:41 🎯 GNN Source Directory: src/gnn/examples 📖 Ontology Terms Definition: src/ontology/act_inf_ontology_terms.json (Loaded: 48 terms)


Ontological Annotations for src/gnn/examples/pymdp_pomdp_agent.md

Mappings:

Validation Summary: All ontological terms are recognized.


Ontological Annotations for src/gnn/examples/rxinfer_multiagent_gnn.md

Mappings:

Validation Summary: 12 unrecognized ontological term(s) found.


Rendered Simulators (Step 9)

LLM Processing Outputs (Step 11)

LLM Outputs for pymdp_pomdp_agent: pymdp_pomdp_agent

JSON Files

pymdp_pomdp_agent_comprehensive_analysis.json

{
  "model_purpose": "The model represents a Multifactor PyMDP agent designed for active inference, incorporating multiple observation modalities and hidden state factors to facilitate decision-making based on various inputs and internal states.",
  "key_components": {
    "states": {
      "hidden_state_factors": {
        "reward_level": {
          "num_states": 2,
          "description": "Represents the level of reward, with two possible states."
        },
        "decision_state": {
          "num_states": 3,
          "description": "Represents the state of decision-making, with three possible states."
        }
      }
    },
    "observations": {
      "state_observation": {
        "num_outcomes": 3,
        "description": "Observations related to the state of the environment."
      },
      "reward": {
        "num_outcomes": 3,
        "description": "Observations related to the rewards received."
      },
      "decision_proprioceptive": {
        "num_outcomes": 3,
        "description": "Observations related to the agent's decision-making process."
      }
    },
    "actions": {
      "decision_state": {
        "num_actions": 3,
        "description": "Actions that can be taken to influence the decision state."
      }
    },
    "control": {
      "description": "The decision_state factor is controlled with three possible actions."
    }
  },
  "component_interactions": {
    "hidden_states": "(D_f0,D_f1)-(s_f0,s_f1)",
    "state_transitions": "(s_f0,s_f1)-(A_m0,A_m1,A_m2)",
    "observation_generation": "(A_m0,A_m1,A_m2)-(o_m0,o_m1,o_m2)",
    "action_influence": "(s_f0,s_f1,u_f1)-(B_f0,B_f1)",
    "next_state_predictions": "(B_f0,B_f1)-(s_prime_f0,s_prime_f1)",
    "free_energy_calculation": "(C_m0,C_m1,C_m2)>G",
    "policy_distribution": "G>\u03c0_f1",
    "action_selection": "\u03c0_f1-u_f1",
    "time_management": "t=Time"
  },
  "data_types_and_dimensions": {
    "A_matrices": {
      "dimensions": "[3,2,3]",
      "description": "Likelihood matrices for each observation modality."
    },
    "B_matrices": {
      "dimensions": "[2,2,1] and [3,3,3]",
      "description": "Transition matrices for hidden state factors."
    },
    "C_vectors": {
      "dimensions": "[3]",
      "description": "Preference vectors for each observation modality."
    },
    "D_vectors": {
      "dimensions": "[2] and [3]",
      "description": "Prior distributions for hidden state factors."
    },
    "hidden_states": {
      "s_f0": {
        "dimensions": "[2,1]",
        "description": "Hidden state for the reward level."
      },
      "s_f1": {
        "dimensions": "[3,1]",
        "description": "Hidden state for the decision state."
      }
    },
    "observations": {
      "o_m0": {
        "dimensions": "[3,1]",
        "description": "Observation for state observation."
      },
      "o_m1": {
        "dimensions": "[3,1]",
        "description": "Observation for reward."
      },
      "o_m2": {
        "dimensions": "[3,1]",
        "description": "Observation for decision proprioceptive."
      }
    },
    "policy_and_control": {
      "\u03c0_f1": {
        "dimensions": "[3]",
        "description": "Policy vector for the controllable decision state."
      },
      "u_f1": {
        "dimensions": "[1]",
        "description": "Action taken for the controllable decision state."
      }
    }
  },
  "potential_applications": [
    "Modeling decision-making processes in artificial agents that utilize multiple sources of information.",
    "Research in cognitive architectures that require understanding of how different observations affect decision-making.",
    "Developing agents for environments where multiple modalities of observation are present, such as robotics or game AI."
  ],
  "limitations_or_ambiguities": [
    "The model does not specify the nature of the observations (e.g., whether they are continuous or discrete).",
    "The exact dynamics governing the interactions and transitions between states are not thoroughly defined.",
    "The model assumes a specific structure for the policy and may not generalize well to other types of decision-making frameworks."
  ],
  "ontology_mapping_assessment": {
    "ActInfOntology": {
      "terms_present": true,
      "relevance": "The terms provided in the ontology mapping (e.g., likelihood matrices, transition matrices, preference vectors) correspond well with the components of the model, ensuring clarity and consistency in representation."
    }
  }
}
pymdp_pomdp_agent_comprehensive_analysis.json

pymdp_pomdp_agent_qa.json

[
  {
    "question": "What are the implications of having multiple observation modalities in the context of the PyMDP agent's decision-making process?",
    "answer": "The GNN file content suggests that having multiple observation modalities allows the PyMDP agent to gather diverse types of information, enhancing its ability to infer the hidden states and make more informed decisions. Each modality (state observation, reward, and decision proprioceptive) contributes unique perspectives on the environment, which can lead to a more robust understanding of the current state and the potential consequences of actions. This multifactorial approach can improve the agent's adaptability and accuracy in its decision-making process, as it can weigh different sources of information when selecting actions based on its learned policies. However, the file does not provide specific details on how these modalities interact or influence each other, leaving some aspects of their implications unexplored."
  },
  {
    "question": "How does the control of the 'decision_state' factor with three possible actions influence the overall behavior of the agent?",
    "answer": "The GNN file indicates that the 'decision_state' factor is controllable with three possible actions, which means that the agent can actively choose between these actions to influence its internal state transitions. The control of this factor affects the transitions represented in the B_f1 matrix, where the next state of the 'decision_state' can change based on the chosen action (u_f1). \n\nThis control allows the agent to adapt its behavior in response to different observations and preferences (C_m vectors) across the modalities. By selecting different actions, the agent can modify its expected free energy (G) and potentially optimize its decision-making process to maximize rewards or minimize uncertainty. Thus, the control of the 'decision_state' factor influences the overall behavior of the agent by enabling it to make decisions that align with its goals based on the current state and observations. \n\nHowever, specific details on how these actions lead to changes in behavior are not elaborated in the GNN file, so the exact influence on behavior remains somewhat abstract."
  },
  {
    "question": "What assumptions are made regarding the transitions defined in B_f0 and B_f1, particularly in terms of state dependencies?",
    "answer": "The GNN file indicates that the transitions defined in B_f0 and B_f1 have specific assumptions regarding state dependencies. \n\nFor B_f0 (\"reward_level\"), it is defined as an identity matrix (B_f0 = eye(2)), implying that the transitions from one state to another are independent of the previous state, as it only transitions to itself. This suggests that the \"reward_level\" does not depend on the action taken (it is uncontrolled), and the next state will be the same as the current state.\n\nIn contrast, B_f1 (\"decision_state\") is a transition matrix with dimensions for three actions, and it follows the structure where each action leads to the next state being determined solely by the previous state. The transitions are defined to allow for state changes based on the current state and the action taken, indicating a direct dependency on both the previous state and the action.\n\nIn summary, B_f0 assumes independence in transitions (no dependency on previous states or actions), while B_f1 assumes that the transitions are dependent on both the previous state and the chosen action."
  },
  {
    "question": "How does the uniform prior distribution for hidden states (D_f0 and D_f1) affect the agent's learning and inference capabilities over time?",
    "answer": "The GNN file provides that both hidden state factors, \"reward_level\" (D_f0) and \"decision_state\" (D_f1), utilize a uniform prior distribution. This uniformity implies that the agent starts with no bias towards any particular state, treating all possible states equally likely at the beginning of the learning process. \n\nAs a result, during the agent's inference and learning, the uniform prior will allow the agent to explore all possible hidden states without preconceived preferences, which can be beneficial in environments with high uncertainty or variability. Over time, as the agent receives observations and updates its beliefs based on the likelihoods defined in the A and B matrices, the uniform prior will gradually be adjusted based on the evidence gathered. This can enhance the agent's adaptability and improve its decision-making as it learns from interactions in its environment.\n\nHowever, the GNN file does not provide explicit details on the exact mechanisms of learning or how the agent's performance evolves over time, so the impact of the uniform prior on learning dynamics remains somewhat general."
  },
  {
    "question": "What are the potential limitations or challenges that may arise from using a multifactor approach in the design of the PyMDP agent?",
    "answer": "The GNN file does not explicitly mention any potential limitations or challenges associated with using a multifactor approach in the design of the PyMDP agent. Therefore, based solely on the provided content, I cannot identify any specific limitations or challenges."
  }
]
pymdp_pomdp_agent_qa.json

Text/Log Files

pymdp_pomdp_agent_summary.txt

### Summary of the GNN Model: Multifactor PyMDP Agent

**Model Name:** Multifactor PyMDP Agent v1

**Purpose:**  
This model represents a PyMDP (Partially Observable Markov Decision Process) agent designed for active inference with multiple observation modalities and hidden state factors. It aims to facilitate decision-making processes by integrating observations and hidden states to optimize actions based on expected free energy.

**Key Components:**

1. **Observation Modalities:**
   - **State Observation:** 3 outcomes
   - **Reward:** 3 outcomes
   - **Decision Proprioceptive:** 3 outcomes

2. **Hidden State Factors:**
   - **Reward Level:** 2 states
   - **Decision State:** 3 states

3. **Control:**
   - The **decision_state** factor is controllable with 3 possible actions.

**Main Connections:**
- The model connects hidden states (`s_f0`, `s_f1`) to likelihood matrices (`A_m0`, `A_m1`, `A_m2`), which in turn connect to the observations (`o_m0`, `o_m1`, `o_m2`).
- The hidden states and the action taken (`u_f1`) influence the transition matrices (`B_f0`, `B_f1`), which determine the next hidden states (`s_prime_f0`, `s_prime_f1`).
- Preferences for observations (`C_m0`, `C_m1`, `C_m2`) contribute to the computation of the expected free energy (`G`), which is used to infer policies (`π_f1`) and actions.

This model is structured to enable the agent to infer states, determine optimal policies, and sample actions dynamically, reflecting its adaptability and decision-making capabilities in uncertain environments.
pymdp_pomdp_agent_summary.txt

LLM Outputs for rxinfer_multiagent_gnn: rxinfer_multiagent_gnn

JSON Files

rxinfer_multiagent_gnn_comprehensive_analysis.json

{
  "model_purpose": "The model is designed for multi-agent trajectory planning in a 2D environment using the RxInfer.jl framework. It incorporates obstacle avoidance, goal-directed behavior, and inter-agent collision avoidance to simulate and plan trajectories for multiple agents navigating through obstacles.",
  "key_components": {
    "state_space_model": {
      "description": "Models the state transitions of agents over time.",
      "parameters": {
        "dt": "Time step for the state model",
        "A": "State transition matrix",
        "B": "Control input matrix",
        "C": "Observation matrix",
        "initial_state_variance": "Prior on initial state"
      }
    },
    "agent_trajectories": {
      "description": "Represents the paths that agents take during the simulation.",
      "parameters": {
        "nr_agents": "Number of agents in the simulation",
        "control_variance": "Variance for control inputs"
      }
    },
    "goal_directed_behavior": {
      "description": "Handles the behavior of agents towards their goals.",
      "parameters": {
        "goal_constraint_variance": "Variance for goal constraints"
      }
    },
    "obstacle_avoidance": {
      "description": "Ensures agents avoid obstacles while planning their trajectories.",
      "parameters": {
        "gamma": "Constraint parameter for obstacle avoidance"
      }
    },
    "collision_avoidance": {
      "description": "Prevents agents from colliding with each other.",
      "parameters": {
        "nr_agents": "Number of agents involved in collision avoidance"
      }
    }
  },
  "component_interactions": {
    "state_space_model": {
      "outputs": [
        "agent_trajectories"
      ],
      "inputs": [
        "dt",
        "A",
        "B",
        "C",
        "initial_state_variance",
        "control_variance"
      ]
    },
    "agent_trajectories": {
      "outputs": [
        "goal_directed_behavior",
        "obstacle_avoidance",
        "collision_avoidance"
      ],
      "inputs": [
        "goal_constraint_variance"
      ]
    },
    "goal_directed_behavior": {
      "inputs": [
        "agent_trajectories"
      ]
    },
    "obstacle_avoidance": {
      "inputs": [
        "agent_trajectories",
        "gamma",
        "gamma_shape",
        "gamma_scale_factor"
      ]
    },
    "collision_avoidance": {
      "inputs": [
        "agent_trajectories",
        "nr_agents"
      ]
    }
  },
  "data_types_and_dimensions": {
    "parameters": {
      "dt": "float[1]",
      "gamma": "float[1]",
      "nr_steps": "int[1]",
      "nr_iterations": "int[1]",
      "nr_agents": "int[1]",
      "softmin_temperature": "float[1]",
      "intermediate_steps": "int[1]",
      "save_intermediates": "bool[1]",
      "A": "float[4,4]",
      "B": "float[4,2]",
      "C": "float[2,4]",
      "initial_state_variance": "float[1]",
      "control_variance": "float[1]",
      "goal_constraint_variance": "float[1]",
      "gamma_shape": "float[1]",
      "gamma_scale_factor": "float[1]",
      "x_limits": "float[2]",
      "y_limits": "float[2]",
      "fps": "int[1]",
      "heatmap_resolution": "int[1]",
      "plot_width": "int[1]",
      "plot_height": "int[1]",
      "agent_alpha": "float[1]",
      "target_alpha": "float[1]",
      "color_palette": "string[1]",
      "door_obstacle_center_1": "float[2]",
      "door_obstacle_size_1": "float[2]",
      "wall_obstacle_center": "float[2]",
      "wall_obstacle_size": "float[2]",
      "experiment_seeds": "int[2]",
      "results_dir": "string[1]",
      "animation_template": "string[1]",
      "control_vis_filename": "string[1]"
    }
  },
  "potential_applications": "This model can be used in robotics, autonomous vehicle navigation, drone path planning, and any scenario where multiple agents must navigate a shared space while avoiding obstacles and each other.",
  "limitations_or_ambiguities": "The model's effectiveness may depend on the accuracy of the state transition matrix and the defined variances. Additionally, the specific behavior of agents under complex scenarios might not be fully captured due to simplifications in the model.",
  "ontology_mapping_assessment": {
    "ActInfOntologyTerms": {
      "present": true,
      "relevance": "The terms mapped reflect key aspects of the model, including time steps, constraint parameters, trajectory length, inference iterations, and state transition matrices, which are critical for understanding agent dynamics and interactions."
    }
  }
}
rxinfer_multiagent_gnn_comprehensive_analysis.json

Text/Log Files

rxinfer_multiagent_gnn_summary.txt

### Summary of the GNN Model: Multi-agent Trajectory Planning

**Model Name:** Multi-agent Trajectory Planning

**Purpose:**  
This model is designed for simulating trajectory planning in a multi-agent scenario within a 2D environment using the RxInfer.jl framework. It incorporates features for obstacle avoidance, goal-directed behavior, and inter-agent collision avoidance, making it suitable for various environments with obstacles.

**Key Components:**

1. **State Space Model:**
   - **State Transition Matrix (A):** Defines how agents transition between states over discrete time steps.
   - **Control Input Matrix (B):** Represents the impact of control inputs on agent states.
   - **Observation Matrix (C):** Maps the state space to observable outputs.

2. **Model Parameters:**
   - **Time Step (dt):** The increment of time for state updates.
   - **Number of Agents (nr_agents):** Defines the number of agents in the simulation (set to 4).
   - **Trajectory Length (nr_steps):** The number of time steps for the trajectory (set to 40).
   - **Inference Iterations (nr_iterations):** Specifies how many iterations are used in the inference process (set to 350).

3. **Connections:**
   - **Agent Trajectories:** The output of the state space model, influenced by initial state and control variances.
   - **Goal Constraints:** Integrates goal-directed behavior by modeling the probability of reaching a target position.
   - **Obstacle Avoidance:** Models the probability distribution of agent positions concerning obstacles to prevent collisions.
   - **Collision Avoidance:** Ensures that agents maintain a safe distance from one another based on their respective radii.

The model effectively combines these components to create a comprehensive planning system that simulates the movement and interaction of multiple agents within a defined environment, adhering to specified constraints and goals.
rxinfer_multiagent_gnn_summary.txt

Pipeline Log

Other Output Files/Directories